CentOS安装EMOS1.6邮件系统

CentOS安装EMOS1.6邮件系统
CentOS安装EMOS1.6邮件系统

CentOS6.4安装EMOS1.6邮件系统

1安装前的准备工作

1.1关闭selinux

1、临时关闭(不用重启机器):

#setenforce 0##设置SELinux 成为permissive模式

##setenforce 1 设置SELinux 成为enforcing模式

2、修改配置文件需要重启机器:

vi /etc/selinux/config

将SELINUX=enforcing改为SELINUX=disabled

重启机器即可

3、查看selinux状态:

#/usr/sbin/sestatus -v ##如果SELinux status参数为enabled即为开启状态SELinux status:enabled

1.2yum先安装好以下组件:

#yum -y install createrepo制作yum仓库文件工具

#yum -y install httpd

#yum -y install mysql mysql-server mysql-devel 安装mysql数据库支持Extmail #groupadd -g 1000 vgroup 配置好邮件虚拟组和用户

#useradd -u 1000 -g 1000 -M vuser

1.下载EMOS镜像

# su - root

# mkdir /path

# cd /path

#wget http://210.21.119.141/EMOS_1.6_x86_64.iso

制作本地yum仓库

# mkdir /mnt/EMOS

# mount -o loop /path/EMOS_1.6_x86_64.iso /mnt/EMOS装载ios镜像文件至EMOS目录# cd /mnt

# createrepo .创建yum源配置文件

# cd /etc/yum.repos.d

# mkdir backup

# mv *.repo ./backup

# vi EMOS.repo

加入以下内容

# yum clean all

# yum list

2配置MTA—postfix

2.1检查postfix

CenOS6.4默认安装了postfix,并且可以支持mysql了,所以不用再安装了#rpm -qa |grep postfix

postfix-2.6.6-2.2.el6_1.x86_64

2.2配置postfix

# postconf -n >/etc/postfix/main2.cf

# mv /etc/postfix/main.cf /etc/postfix/main.cf.bak

# mv /etc/postfix/main2.cf /etc/postfix/main.cf

# vi /etc/postfix/main.cf#修改main.cf 配置文件

增加以下内容

2.3设置postfix开机自启

# chkconfig postfix on

3配置courier-authlib

3.1安装courier-authlib

# yum install courier-authlib courier-authlib-mysql 3.2 修改authlib 配置文件

# rm -f /etc/authlib/authmysqlrc

3.3 修改authmysqlrc 的权限和拥有者

# chown daemon.daemon /etc/authlib/authmysqlrc

# chmod 660 /etc/authlib/authmysqlrc

3.4修改authdaemonrc

3.5 启动courier-authlib

# service courier-authlib start

Starting Courier authentication services: authdaemond

3.6 修改authdaemon socket 目录权限,否则以下面的测试SMTP认

证就不能通过

# chmod 755 /var/spool/authdaemon/

4配置maildrop

4.1安装maildrop

# yum install maildrop

4.2配置maildrop

配置master.cf 为了使Postfix支持Maildrop,必须修改/etc/postfix/master.cf文件,注释掉原来的maildrop的配置内容,并改为:

注意:flags前面有“两个空格”

配置main.cf 由于maildrop不支持一次接收多个收件人,因此必须在/etc/postfix/main.cf里增加如下参数:

# vi/etc/postfix/main.cf

4.3 测试maildrop对authlib支持

#maildrop –v

maildrop 2.0.4 Copyright 1998-2005 Double Precision, Inc.

GDBM extensions enabled.

Courier Authentication Library extension enabled.

Maildir quota extension enabled.

This program is distributed under the terms of the GNU General Public

License. See COPYING for additional information.

注意事项:

1、如需重新编译Maildrop软件包,必须先获得其源码rpm包,并且必须先行安装courier-authlib及其devel软件包,否则编译后的maildrop将无法打开authlib支持。

2、maildrop RPM包安装时,会自动创建vuser用户及vgroup用户组,专门用于邮件的存储,vuser:vgroup的uid/gid都是1000,这与一般的邮件文档中提及用postfix用户存邮件不一样。因为postfix用户的uid一般都低于500,而Suexec模块编译时对UID/GID的要求是要大于500,因此使用postfix用户不能满足要求。其次,如果用Maildrop作为投递代理(MDA),以postfix身份投递的话,会导致postfix MTA错误。

5 配置apache

5.1 修改apache配置文件

# vi /etc/httpd/conf/httpd.conf

新建vhost_extmail.conf

# chkconfig httpd on

6 配置extmail+extman

6.1 安装extmail 和extman

# yum install extsuite-webmail extsuite-webman

6.2配置extmail 和extman

# cp /var/www/extsuite/extmail/webmail.cf.default /var/www/extsuite/extmail/webmail.cf

# vi /var/www/extsuite/extmail/webmail.cf

更新cgi目录权限由于SuEXEC的需要,必须将cgi目录修改成vuser:vgroup权限:

# chown -R vuser:vgroup /var/www/extsuite/extmail/cgi/

# chown -R vuser:vgroup /var/www/extsuite/extman/cgi/

链接基本库到Extmail

# mkdir /tmp/extman

# chown -R vuser:vgroup /tmp/extman/

由于RedHat发行版中包含了一个叫tmpwatch的工具,该工具会定期扫描/tmp/下的文件,如果这些文件很久都没被使用,将被删除,因此如果后台长期不使用,/tmp/extman目录有可能被tmpwatch删除,所以要么定期登陆后台,要么修改 webman.cf将临时目录修改到另一个地方。此处暂以/tmp/extman默认值为例。

7配置数据库

7.1数据库初始化

# service mysqld start

设置开机启动

# chkconfig mysqld on

7.2 导入数据且初始化

(默认的mysql都没有密码的,所以以下命令都不需要认证密码)

# vi /var/www/extsuite/extman/docs/init.sql

把里面所有https://www.360docs.net/doc/713582633.html,的改为https://www.360docs.net/doc/713582633.html,

此处可更改以后使用邮件的域名,安装时可以不修改。

# mysql

# mysql

以上语句不行的话使用以下语句:

# mysql -u root -p < /var/www/extsuite/extman/docs/extmail.sql

# mysql -u root -p < /var/www/extsuite/extman/docs/init.sql

注意事项:passwd: 直接回车即可

上述导入初始化SQL时,默认的uidnumber/gidnumber都是1000,这和vuser:vgroup 的uid/gid一致,是因为maildrop投递时会从数据库里取uidnumber/gidnumber,而在master.cf里已经定义好了投递时的运行身份(vuser:vgroup),所以这两个字段的内容必须为1000,否则将出现投递错误,例如报0×06等错误。

设置虚拟域和虚拟用户的配置文件

# cd /var/www/extsuite/extman/docs

# cp /var/www/extsuite/extman/docs/mysql_virtual_alias_maps.cf /etc/postfix/ # cp /var/www/extsuite/extman/docs/mysql_virtual_domains_maps.cf /etc/postfix/ # cp /var/www/extsuite/extman/docs/mysql_virtual_mailbox_maps.cf /etc/postfix/ # cp /var/www/extsuite/extman/docs/mysql_virtual_sender_maps.cf /etc/postfix/

7.3 配置main.cf:

# vi /etc/postfix/main.cf

7.4 重启postfix

# service postfix restart

7.5测试authlib

建立刚才导入mysql的postmaster@https://www.360docs.net/doc/713582633.html,帐户的Maildir,请输入如下命令:

# cd /var/www/extsuite/extman/tools

# ./maildirmake.pl /home/domains/https://www.360docs.net/doc/713582633.html,/postmaster/Maildir

# chown -R vuser:vgroup /home/domains/https://www.360docs.net/doc/713582633.html,

# /usr/sbin/authtest -s login postmaster@https://www.360docs.net/doc/713582633.html, extmail

如输出以下结果证明extman 正确安装,数据库也正确导入,courier-authlib 正确连接mysql

注:如有问题可尝试(增加用户目录的权限):

# chmod 755 /home/domains

最后访问https://www.360docs.net/doc/713582633.html,/extmail/,如无意外,将看到webmail的登陆页,不过此时还没有加正式的用户,所以不能登陆,包括postmaster@https://www.360docs.net/doc/713582633.html,也不行。必须要登陆

7.6测试:并增加一个新帐户

http://192.168.18.101/extmail iptables要开放80 port 25port 110port 重启iptables

重启iptables

service iptables restart

service httpd restart

到http://192.168.18.101/extman/里增加一个新帐户才能登陆。

ExtMan的默认超级管理员帐户:root@https://www.360docs.net/doc/713582633.html,,初始密码:extmail*123*,登陆成功后,建议将密码修改,以确保安全。

出现:

查看操作系统时间的问题!

8配置图形化日志

8.1启动mailgraph_ext

# /usr/local/mailgraph_ext/mailgraph-init start

8.2 启动cmdserver(在后台显示系统信息)

# /var/www/extsuite/extman/daemon/cmdserver --daemon

8.3 加入开机自启动

# echo "/usr/local/mailgraph_ext/mailgraph-init start" >> /etc/rc.d/rc.local

# echo "/var/www/extsuite/extman/daemon/cmdserver -v -d" >> /etc/rc.d/rc.local

添加定时任务:

shell

# crontab -e

添加以下内容:

0 4 * * * /var/www/extsuite/extman/tools/expireusers.pl -all postmaster@https://www.360docs.net/doc/713582633.html,

30 4 * * * /var/www/extsuite/extman/tools/reportusage.pl -all /home/domains postmaster@https://www.360docs.net/doc/713582633.html, 可以加,也可不加

注:

Extmail url: http://ip/extmail

Extman url: http://ip/extman

Extman 管理员用户名:root@https://www.360docs.net/doc/713582633.html,

管理员默认密码:extmail*123*

Extmail 登录时,域名项应改为https://www.360docs.net/doc/713582633.html,

9 配置cyrus-sasl

9.1 删除系统自带的cyrus-sasl

# rpm -e --nodeps cyrus-sasl

9.2 安装EMOS1.6里的cyrus-sasl

# yum install cyrus-sasl

注:此处如果安装有问题的话,请配置yum源,至163上下载包;

9.3 修改postfix 配置文件

# vi /etc/postfix/main.cf

增加以下内容

9.4配置smtpd.conf

建立目录:

#mkdir /usr/lib/sasl2/

# vi /usr/lib/sasl2/smtpd.conf(32位系统使用此条命令)

# vi /usr/lib64/sasl2/smtpd.conf(64位系统使用此条命令)

10重启postfix

# service postfix restart

10.1 测试SMTP认证

通过以下命令获得postmaster@https://www.360docs.net/doc/713582633.html,的用户名及密码的BASE64编码:

# perl -e 'use MIME::Base64; print encode_base64("postmaster\@https://www.360docs.net/doc/713582633.html,")' 结果:

cG9zdG1hc3RlckBleHRtYWlsLm9yZw==

# perl -e 'use MIME::Base64; print encode_base64("extmail")'

结果:

ZXh0bWFpbA==

开始测试

注:如果认证出问题(报:535 5.7.8 Error: authentication failed: generic failure错误)

1.请查看authdaemond目录下文件socket权限是可执行:

chmod 777 /var/spool/authdaemon/socket

2.更改domains目录权限

chown vuser.vgroup /home/domains

11 配置courier-imap

默认的courier-authlib及courier-imap都会增加系统自启动设置,因此下一次服务器启动将自动启动相应的authlib及POP3服务

# yum install courier-imap

由于Courier-imap的IMAP目录是按UTF-7编码的,ExtMail目前还没有正式支持IMAP目录,因此需要屏蔽IMAP,只提供pop3服务。而就目前的使用情况来看,IMAP使用的非常少,绝大部分OutLook/Foxmail用户都习惯使用POP3而非IMAP。

# vi /usr/lib/courier-imap/etc/imapd

修改以下内容

# vi /usr/lib/courier-imap/etc/imapd-ssl

11.1测试pop3

启动courier-imap ,测试pop3(先登录extman 新建一个邮件用户,如用户名为m.gao,密码为111111)

# service courier-imap start

# telnet localhost 110

正常使用了

注:

进入系统后如出现无法获取系统信息情况(),请重启/var/www/extsuite/extman/daemon/cmdserver

kill ****(cmdserver进程号)

执行/var/www/extsuite/extman/daemon/cmdserver -v -d

添加杀毒Clamav、查毒amavisd-new、邮件过滤DSpam 后续配置

12常见问题处理:

12.1后台报错

vi /etc/rc.local查看里面有二句乱码的语句,改正

再刷新一下后台管理

12.22.验证110 SSL失败.

[root@localhost ~]# telnet localhost 110

Trying ::1...

Connected to localhost.

Escape character is '^]'.

+OK Hello there.

user test@https://www.360docs.net/doc/713582633.html,

+OK Password required.

pass extmail

-ERR Temporary problem, please try again later

Connection closed by foreign host.

日志记录:

Jun 8 08:11:53 localhost pop3d: Connection, ip=[::1]

Jun 8 08:12:36 localhost pop3d: test@https://www.360docs.net/doc/713582633.html,: chdir(/home/domains/https://www.360docs.net/doc/713582633.html,/test) failed!!

Jun 8 08:12:36 localhost pop3d: error: Permission denied

Jun 8 08:12:36 localhost pop3d: LOGIN FAILED, user=test@https://www.360docs.net/doc/713582633.html, , ip=[::1]

Jun 8 08:12:36 localhost pop3d: authentication error: Permission denied

解决方法:chmod -R 755 /home/domains/

创建域,不显示:

13安装病毒过滤-amavisd-new

1、安装amavisd-new

# yum –y install amavisd-new

设置相关目录权限:

# chown -R amavis.amavis /var/spool/vscan/

2、配置SpamAssassin

Amavisd-new 通过Mail::SpamAssassin 模块来调用SA的功能,因此这里配置SA和常规配置SA软件有些区别,主要集中在修改local.cf文件上。

增加中文规则:用于处理中文(简体)垃圾邮件。

# wget -N -P /usr/share/spamassassin https://www.360docs.net/doc/713582633.html,/spam/sa/Chinese_rules.cf #这步找不到,没有关系,这个规则也过时了~

设置规则自动更新:

# /usr/bin/crontab -e

然后输入如下的内容:

0 0 1 * * wget -N -P /usr/share/spamassassin https://www.360docs.net/doc/713582633.html,/spam/sa/Chinese_rules.cf;

/etc/init.d/amavisd restart

存盘退出即可。最后运行以下调试命令以确认amavisd没有错误:

# /usr/sbin/amavisd -c /etc/amavisd.conf debug

如果没有异常提示或报错退出则表示一切都正常,按ctrl+c终止,然后正常启动,若提示pid 不存在等错误,不必理会。

设置amavisd开机自启:

shell

# service amavisd start

# chkconfig amavisd on

3、配置ClamAV

安装ClamAV ###或手动下载本地,再上传

#cd

#wget http://packages.sw.be/clamav/clamav-0.97.7-1.el6.rf.x86_64.rpm

#wget http://packages.sw.be/clamav/clamd-0.97.7-1.el6.rf.x86_64.rpm

#wget http://packages.sw.be/clamav/clamav-db-0.97.7-1.el6.rf.x86_64.rpm

# rpm -ivh clam*

注意:因为EMOS里面的版本太旧,导致测试时老出问题。故以上是最新的x64 版本;可自行到http://packages.sw.be/clamav/下找自己需要的最新的版本;

编辑clamd.conf文件

# vi /etc/clamd.conf

去掉‘LocalSocket /var/run/clamav/clamd.sock’的注释,并注释掉‘TCPSocket 3310’,我们将使用unix socket而不是TCP,两者不可并存。

变动内容见下:

# Default: disabled

LocalSocket /var/run/clamav/clamd.sock

#TCPSocket 3310

设置相关目录权限:

将clamav加到amavis运行组里,并调整目录权限,否则clamav将无法扫描amavisd-new产生的临时文件

shell

# gpasswd -a clamav amavis

# usermod -G amavis clamav

# chown amavis.amavis /var/spool/vscan

# chmod 750 /var/spool/vscan

# chown amavis.amavis /var/spool/vscan/tmp

# chmod 750 /var/spool/vscan/tmp

默认的/var/spool/vscan 目录属性是:

drwxr-x--- 5 amavis amavis

# service clamd start

# freshclam –daemon

4、配置amavisd.con文件

修改amavisd.conf

# vi /etc/amavisd.conf

修改的主要参数如下:

$mydomain = 'https://www.360docs.net/doc/713582633.html,';

$db_home = "$MYHOME/db";

$lock_file = "$MYHOME/amavisd.lock"; # -L

$pid_file = "$MYHOME/amavisd.pid"; # -P

$myhostname = 'https://www.360docs.net/doc/713582633.html,';

@local_domains_maps = qw(.);

@mynetworks = qw( 127.0.0.0/8 );

对本地发出的邮件不进行内容过滤

$policy_bank{'MYNETS'} = { # mail originating from @mynetworks

originating => 1, # is true in MYNETS by default, but let's make it explicit

os_fingerprint_method => undef, # don't query p0f for internal clients

allow_disclaimers => 1, # enables disclaimer insertion if available

bypass_spam_checks_maps => [1],

bypass_banned_checks_maps => [1],

bypass_header_checks_maps => [1],

};

$sa_spam_modifies_subj = 0; # 当邮件被认为是垃圾邮件时,是否修改邮件的主题

$remove_existing_x_scanned_headers= 1; # 凡是经过Amavisd 过滤的邮件,都会在邮件头中被加入一行邮件头信息

$remove_existing_spam_headers = 1;

# 修改投递/拦截的方法:

$final_virus_destiny = D_DISCARD;

$final_banned_destiny = D_DISCARD;

$final_spam_destiny = D_PASS;

$final_bad_header_destiny = D_PASS;

# 配置Amavisd与Clamav结合

@av_scanners = (

['ClamAV-clamd',

\&ask_daemon, ["CONTSCAN {}\n", "/var/run/clamav/clamd.sock"],

qr/\bOK$/, qr/\bFOUND$/,

qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],

);

@av_scanners_backup = (

['ClamAV-clamscan', 'clamscan',

"--stdout --no-summary -r --tempdir=$TEMPBASE {}",

[0], qr/:.*\sFOUND$/, qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],

);

amavisd.conf常用参数说明:

$max_servers = 10; 设置最大可使用的进程数

$sa_spam_subject_tag = '[SPAM] '; 加[SPAM] 标记

$mydomain = 'https://www.360docs.net/doc/713582633.html,'; 设置域名

$myhostname = 'https://www.360docs.net/doc/713582633.html,'; 设置主机名

@local_domains_maps = qw(.); 对所有的域检查

$sa_tag2_level_deflt = 5.0; 超过这个分数,允许在邮件标题加入[SPAM] 标记$sa_kill_level_deflt = 5.0; 超过这个分数,直接將信件备份后删除

$final_virus_destiny: 检测到病毒时的动作

$final_banned_destiny: 检测到受禁止的内容时的动作

$final_spam_destiny: 检测到垃圾邮件、广告邮件(spam)时的动作$final_bad_header_destiny:检测到不良信件时的动作

默认有以下几种动作:

D_PASS: 无论信件是否有问题,都会将信件发给收件人

D_DISCARD: 信件将被丢弃,并且不会告知收件人及发件人D_BOUNCE: 信件不会发送给收件人,但会通知发件人邮件没有被投递

D_REJECT: 邮件不会被投递给收件人,但会通知发件人邮件被拒绝

注意事项:

上述$mydomain参数与$myhostname参数相同,主要是为了方便之后的病毒/垃圾汇报邮件发给系统管理员时,能投递到本地的别名里,再转交到虚拟域的特定用户。

5、配置Postfix 集成amavisd-new

增加邮件别名

# vi /etc/postfix/aliases

增加如下信息,注意:默认的aliases数据库里已有一条virusalert的别名,请删除,再输入下面的别名记录,并确保所有记录都是唯一的:

virusalert: root

spam.police: root

postfix: test@https://www.360docs.net/doc/713582633.html,

保存并执行newaliases命令生成新的别名数据库,重新启动amavisd:

# newaliases

# service amavisd restart

编辑master.cf文件:

# vi /etc/postfix/master.cf

增加如下内容:

smtp-amavis unix - - n - 3 smtp

-o smtp_data_done_timeout=1200

-o smtp_send_xforward_command=yes

-o disable_dns_lookups=yes

-o max_use=10

127.0.0.1:10025 inet n - n - - smtpd -o content_filter=

-o local_recipient_maps=

-o relay_recipient_maps=

-o smtpd_restriction_classes=

-o smtpd_client_restrictions=

-o smtpd_helo_restrictions=

-o smtpd_sender_restrictions=

-o smtpd_recipient_restrictions=permit_mynetworks,reject

-o mynetworks=127.0.0.0/8

-o strict_rfc821_envelopes=yes

-o smtpd_error_sleep_time=0

-o smtpd_soft_error_limit=1001

-o smtpd_hard_error_limit=1000

-o receive_override_options=no_unknown_recipient_checks,no_header_body_checks

编辑main.cf文件:

# vi /etc/postfix/main.cf

增加如下内容:

# Content-Filter

content_filter = smtp-amavis:[127.0.0.1]:10024

receive_override_options = no_address_mappings

注意:receive_override_options 这里必须增加,禁止地址展开/影射,否则如果遇到别名的时候会引起冗余邮件的产生。

重启postfix :

# service postfix restart

重新启动amavisd:

# service amavisd restart

6、测试Clamav

# telnet localhost 25

其过程如下:

Trying 127.0.0.1...

Connected to localhost.localdomain (127.0.0.1).

Escape character is '^]'.

220 https://www.360docs.net/doc/713582633.html, ESMTP Postfix - by https://www.360docs.net/doc/713582633.html,

mail from:<<输入内容

250 2.1.0 Ok

rcpt to:<<输入内容

250 2.1.5 Ok

data <<输入内容

354 End data with .

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H* <<输入内容

.

250 2.0.0 Ok: queued as BC24E85260

quit <<输入内容

221 2.0.0 Bye

Connection closed by foreign host.

在邮件日志里,应该有相应的信息出现:

Mar 22 06:43:15 localhost amavis[15405]: (15405-01) Blocked INFECTED (Eicar-Test-Signature), [192.168.0.235] ->, quarantine:

virus-mI6vbjkWZ2Tz, Message-ID: <003401c88c1a$74706360$eb00a8c0@nbk00045>, mail_id: mI6vbjkWZ2Tz, Hits: -, size: 1757, 474 ms

如果看到类似这样的日志,表明Clamav+Amavisd-new工作正常。

14配置spam_locker

1、安装Spam_Locker

# yum install extsuite-slockd

配置resolv.conf

请确认/etc/resolv.conf里的dns服务器是离你的邮件服务器最近,速度最快的dns server,slockd很依赖dns的好坏,因此给系统配置一个快速的dns能大幅度提高处理速度。以下给出

一个配置仅供参考:

shell

# vi /etc/resolv.conf

增加以下内容:

nameserver 8.8.8.8 #也可以指定自己内部的DNS,如果在内部网络搭建

上述dns服务器是上海电信的DNS服务器,对于非上海的朋友,请改为离你最近的DNS服务器IP,如果可能的话,请配置一个简单的bind,成为本地的dns cache server,可以获得最高性

能。这里略过这一步骤,但您必须确保dns的配置是正确并且可靠的,否则slockd将不能工作!

2、测试slockd

启动slockd

shell

# /usr/local/slockd/slockd-init start

此时slockd将启动,并进入非daemon方式的监听模式,接受来自10030端口的请求,命令行下将显示如下调试信息:

Starting spam locker daemon: slockd

starting child 2908

starting child 2909

打开另一个ssh/终端窗口:

# cd /usr/local/slockd/tools

# perl policy_sig -h localhost -p 10030 --helo FOOBAR --ip 192.168.0.1 --from test@https://www.360docs.net/doc/713582633.html, --to test@https://www.360docs.net/doc/713582633.html,

此时,程序应该返回如下错误信息:这表示slockd初步的正常工作了。

action=554 blocked using https://www.360docs.net/doc/713582633.html,, see https://www.360docs.net/doc/713582633.html,/cgi/rbl?192.168.0.1

设置slockd开机自启动

相关主题
相关文档
最新文档