热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

extmail邮件服务器安装配置详细过程

修改主机名:第一步:#hostnameoratest第二步:修改vi/etc/sysconfig/network中的hostname第三步:修改vi/etc/hosts文件中的hostname关闭防火墙等:#serviceiptablesstop#setenforce04.创建客户端yum文件当你没有EMOS的光盘,但

修改主机名:

第一步:# hostname oratest 

第二步:修改vi /etc/sysconfig/network中的hostname

第三步:修改 vi /etc/hosts文件中的hostname

关闭防火墙等:

#service iptables stop

#setenforce 0

4.创建客户端 yum 文件

当你没有EMOS的光盘,但是服务器可以联网时,你可以直接采用Extmail官网的yum源 

# vi /etc/yum.repos.d/EMOS-Base.repo 

加入以下内容: 

# EMOS-Base.repo

#

# Created by ExtMail Dev Team: http://www.extmail.org/

#

# $Id$

[EMOS-base]

name=EMOS-Base

baseurl=http://mirror.extmail.org/yum/emos/1.5/os/$basearch/

gpgcheck=0

priority=0

protect=0

[EMOS-update]

name=EMOS-Updates

baseurl=http://mirror.extmail.org/yum/emos/1.5/updates/$basearch/

gpgcheck=0

priority=0

protect=0

保存后,然后尝试执行一下yum list 等操作,看看是否已经成功;

四、配置mta-postfix 

1、安装postfix

# yum install postfix

# rpm -e sendmail 或使用yum remove sendmail

2、配置postfix

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

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

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

编辑main.cf:

# vi /etc/postfix/main.cf 

增加如下内容:

# hostname

mynetworks = 127.0.0.1

myhostname = mail.beylove.com

mydestination = $mynetworks $myhostname

# banner

mail_name = Postfix - by extmail.org

smtpd_banner = $myhostname ESMTP $mail_name

# response immediately

smtpd_error_sleep_time = 0s

# Message and return code control

message_size_limit = 5242880

mailbox_size_limit = 5242880

show_user_unknown_table_name = no

# Queue lifetime control

bounce_queue_lifetime = 1d

maximal_queue_lifetime = 1d

设置postfix开机自启: 

chkconfig postfix on 

五、安装Courier-Authlib

安装以下软件包:

# yum install courier-authlib

# yum install courier-authlib-mysql 

编辑/etc/authlib/authmysqlrc文件: 

# vi /etc/authlib/authmysqlrc 

并将其内容清空,然后增加如下内容: 

MYSQL_SERVER            localhost

MYSQL_USERNAME          extmail

MYSQL_PASSWORD          extmail

MYSQL_SOCKET            /var/lib/mysql/mysql.sock

MYSQL_PORT              3306

MYSQL_OPT               0

MYSQL_DATABASE          extmail

MYSQL_USER_TABLE        mailbox

MYSQL_CRYPT_PWFIELD     password

MYSQL_UID_FIELD         uidnumber

MYSQL_GID_FIELD         gidnumber

MYSQL_LOGIN_FIELD       username

MYSQL_HOME_FIELD        homedir

MYSQL_NAME_FIELD        name

MYSQL_MAILDIR_FIELD     maildir

MYSQL_QUOTA_FIELD       quota

MYSQL_SELECT_CLAUSE     SELECT username,password,"",uidnumber,gidnumber,\

                        CONCAT('/home/domains/',homedir),               \

                        CONCAT('/home/domains/',maildir),               \

                        quota,                        \

                        name                          \

                        FROM mailbox                  \

                        WHERE username = '$(local_part)@$(domain)'

修改authdaemonrc文件

# vi +27 /etc/authlib/authdaemonrc 

修改如下内容: 

authmodulelist="authmysql"

authmodulelistorig="authmysql"

启动courier-authlib:

service courier-authlib start 

如一切正常,命令行将返回如下信息: 

Starting Courier authentication services: authdaemond 

修改authdaemon socket目录权限

如果该目录权限不正确修改,maildrop及postfix等将无法正确获取用户的信息及密码认证: 

chmod 755 /var/spool/authdaemon/ 

六、安装

1.安装maildrop

yum install maildrop 

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

maildrop   unix        -       n        n        -        -        pipe

  flags=DRhu user=vuser argv=maildrop -w 90 -d ${user}@${nexthop} ${recipient} ${user} ${extension} {nexthop}

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

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

maildrop_destination_recipient_limit = 1

2.测试maildrop对authlib支持

# maildrop -v

看是否出现以下内容:

maildrop 2.1.0 Copyright 1998-2005 Double Precision, Inc.

GDBM/DB 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错误。

七、配置apache

1.虚拟主机设置

编辑httpd.conf文件:

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

在最后一行加上:

NameVirtualHost *:80

Include conf/vhost_*.conf

编辑 vhost_extmail.conf 

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

里面定义虚拟主机的相关内容: 

# VirtualHost for ExtMail Solution

ServerName mail.extmail.org

DocumentRoot /var/www/extsuite/extmail/html/

ScriptAlias /extmail/cgi/ /var/www/extsuite/extmail/cgi/

Alias /extmail /var/www/extsuite/extmail/html/

ScriptAlias /extman/cgi/ /var/www/extsuite/extman/cgi/

Alias /extman /var/www/extsuite/extman/html/

# Suexec config

SuexecUserGroup vuser vgroup

设置apache开机启动 

# chkconfig httpd on 

八、配置extmail

1.安装extmail

# yum install extsuite-webmail 

2.编辑webmail.cf

# cd /var/www/extsuite/extmail

# cp webmail.cf.default webmail.cf

# vi +136 webmail.cf 

主要变动的内容见下: 

SYS_MYSQL_USER = extmail

SYS_MYSQL_PASS = extmail

SYS_MYSQL_DB = extmail

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

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

九、配置管理后台-extmail

1、yum安装ExtMan

# yum install extsuite-webman 

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

# 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默认值为例。 

2、数据库初始化

启动Mysql 

# service mysqld start

# chkconfig mysqld on 

导入mysql数据库结构及初始化数据,root密码默认为空 

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

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

注意事项:

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

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

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

# cp mysql_virtual_alias_maps.cf /etc/postfix/

# cp mysql_virtual_domains_maps.cf /etc/postfix/

# cp mysql_virtual_mailbox_maps.cf /etc/postfix/

# cp mysql_virtual_sender_maps.cf /etc/postfix/ 

配置main.cf: 

# vi /etc/postfix/main.cf 

增加以下内容:

# extmail config here

virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf

virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf

virtual_transport = maildrop:

重启postfix : 

# service postfix restart 

4、测试authlib

在命令行下执行:

# /usr/sbin/authtest -s login postmaster@extmail.org extmail 

结果如下:

Authentication succeeded.

     Authenticated: postmaster@extmail.org  (uid 1000, gid 1000)

    Home Directory: /home/domains/extmail.org/postmaster

           Maildir: /home/domains/extmail.org/postmaster/Maildir/

             Quota: 104857600S

Encrypted Password: $1$phz1mRrj$3ok6BjeaoJYWDBsEPZb5C0

Cleartext Password: extmail

           Options: (none)

这样表明ExtMan的正确安装,数据库也正确导入,courier-authlib能正确连接到mysql数据库。最后访问http://mail.extmail.org/extmail/,如无意外,将看到webmail的登陆页,不过此时还没有加正式的用户,所以不能登陆,包括postmaster@extmail.org也不行。必须要登陆到http://mail.extmail.org/extman/ 里增加一个新帐户才能登陆。

ExtMan的默认超级管理员帐户:root@extmail.org,初始密码:extmail*123*,登陆成功后,建议将密码修改,以确保安全。

5、配置图形化日志

启动mailgraph_ext 

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

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

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

加入开机自启动:

# 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 

使用方法: 等待大约15分钟左右,如果邮件系统有一定的流量,即可登陆到extman里,点“图形日志”即可看到图形化的日志。具体每天,周,月,年的则点击相应的图片进入即可。

十、配置Cyrus-SASL 

1、安装cyrus-sasl

删除系统的cyrus-sasl:

# rpm -e cyrus-sasl --nodeps

# rpm -e cyrus-sasl-md5 --nodeps

安装新的支持authdaemon的软件包 

# yum install cyrus-sasl

2、配置main.cf文件

Postfix的SMTP认证需要透过Cyrus-SASL,连接到authdaemon获取认证信息。 

编辑main.cf 

# vi /etc/postfix/main.cf 

增加如下内容: 

# smtpd related config

smtpd_recipient_restrictiOns=

        permit_mynetworks,

        permit_sasl_authenticated,

        reject_non_fqdn_hostname,

        reject_non_fqdn_sender,

        reject_non_fqdn_recipient,

        reject_unauth_destination,

        reject_unauth_pipelining,

        reject_invalid_hostname,

# SMTP sender login matching config

smtpd_sender_restrictiOns=

        permit_mynetworks,

        reject_sender_login_mismatch,

        reject_authenticated_sender_login_mismatch,

        reject_unauthenticated_sender_login_mismatch

smtpd_sender_login_maps =

        mysql:/etc/postfix/mysql_virtual_sender_maps.cf,

        mysql:/etc/postfix/mysql_virtual_alias_maps.cf

# SMTP AUTH config here

broken_sasl_auth_clients = yes

smtpd_sasl_auth_enable = yes

smtpd_sasl_local_domain = $myhostname

smtpd_sasl_security_optiOns= noanonymous

3、编辑smtpd.conf文件

# vi /usr/lib/sasl2/smtpd.conf 

确保其内容为: 

pwcheck_method: authdaemond

log_level: 3

mech_list: PLAIN LOGIN

authdaemond_path:/var/spool/authdaemon/socket

重新启动postfix:

# service postfix restart 

4、测试SMTP认证

通过以下命令获得postmaster@extmail.org的用户名及密码的BASE64编码:

# perl -e 'use MIME::Base64;print encode_base64("postmaster\@extmail.org")'

内容如下: 

cG9zdG1hc3RlckBleHRtYWlsLm9yZw==

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

内容如下:

ZXh0bWFpbA==

然后本机测试: 

# telnet localhost 25 

其过程如下: 

Trying 127.0.0.1...

Connected to localhost.localdomain (127.0.0.1).

Escape character is '^]'.

220 mail.extmail.org ESMTP Postfix - by extmail.org

ehlo demo.domain.tld     <<输入内容

250-mail.extmail.org

250-PIPELINING

250-SIZE 10240000

250-VRFY

250-ETRN

250-AUTH LOGIN PLAIN

250-AUTH=LOGIN PLAIN

250-ENHANCEDSTATUSCODES

250-8BITMIME

250 DSN

auth login     <<输入内容

334 VXNlcm5hbWU6

cG9zdG1hc3RlckBleHRtYWlsLm9yZw==     <<输入内容

334 UGFzc3dvcmQ6

ZXh0bWFpbA==    <<输入内容

235 2.0.0 Authentication successful

quit     <<输入内容

221 2.0.0 Bye 

最后出现235 Authentication Successful 表明认证成功了。

十一、配置Courier-imap

1、安装Courier-imap

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

yum install courier-imap 

配置courier-imap 

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

vi +414 /usr/lib/courier-imap/etc/imapd 

找到IMAPDSTART=YES

修改内容如下:

IMAPDSTART=NO

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

修改内容如下:

IMAPDSSLSTART=NO 

然后重新启动courier-imap: 

# service courier-imap start 

测试POP3 请按如下步骤输入pop3命令测试其是否正常工作,注意蓝色的信息是我们输入到POP3服务器的(请首先登录extman自行建立test@extmail.org用户,密码:extmail) 

# telnet localhost 110 

其过程如下: 

Trying 127.0.0.1...

Connected to localhost.localdomain (127.0.0.1).

Escape character is '^]'.

+OK Hello there.

user test@extmail.org     <<输入内容

+OK Password required.

pass extmail     <<输入内容

+OK logged in.

list     <<输入内容

+OK POP3 clients that break here, they violate STD53.

.

quit     <<输入内容

+OK Bye-bye.

Connection closed by foreign host.

十二、配置内容、病毒过滤 

1、安装amavisd-new

# yum 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 www.ccert.edu.cn/spam/sa/Chinese_rules.cf 

 设置规则自动更新:

 # /usr/bin/crontab -e 

然后输入如下的内容: 

0 0 1 * * wget -N -P /usr/share/spamassassin www.ccert.edu.cn/spam/sa/Chinese_rules.cf; /etc/init.d/amavisd restart 

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

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

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

设置amavisd开机自启:

# service amavisd start

# chkconfig amavisd on 

3、配置ClamAV

安装ClamAV 

# cd /root/rpm

# wget http://packages.sw.be/clamav/clamav-0.97-1.el5.rf.i386.rpm

# wget http://packages.sw.be/clamav/clamd-0.97-1.el5.rf.i386.rpm

# wget http://packages.sw.be/clamav/clamav-db-0.97-1.el5.rf.i386.rpm

# rpm -ivh clam* 

备注: 这里的ClamAV采用packages.sw.be站点的RPM包,因为EMOS里面的版本太旧,导致测试时老出问题。 

编辑clamd.conf文件 

# vi +80 /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产生的临时文件 

# 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

对于clamav用户而言,则无任何权限访问该目录,因此maillog里amavisd-new会提示: 

May 19 08:38:53 as3 amavis[1752]: (01752-01) ask_av (ClamAV-clamd) FAILED - unexpected result: /var/spool/vscan/tmp/amavis-20050519T

083853-01752/parts: Access denied. ERROR\n

May 19 08:38:53 as3 amavis[1752]: (01752-01) WARN: all primary virus scanners failed, considering backups 

启动ClamAV及开机自启:

# service clamd restart

# freshclam ?daemon

4、配置amavisd.con文件

修改amavisd.conf 

# vi /etc/amavisd/amavisd.conf 

修改的主要参数如下: 

$mydomain = 'extmail.org';

$db_home   = "$MYHOME/db";

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

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

$myhostname = 'mail.extmail.org';

@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 = 'mail.extmail.org';      设置域名

$myhostname = 'mail.extmail.org';    设置主机名

@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@extmail.org

保存并执行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 mail.extmail.org ESMTP Postfix - by extmail.org

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工作正常。 

-------------------------------------------------------------------------------------------

十三、配置spam_locker

1、安装Spam_Locker

# yum install extsuite-slockd 

配置resolv.conf 

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

# vi /etc/resolv.conf 

增加以下内容:

nameserver 202.96.209.6

上述dns服务器是上海电信的DNS服务器,对于非广东朋友,请改为离你最近的DNS服务器IP,如果可能的话,请配置一个简单的bind,成为本地的dns cache server,可以获得最高性能。这里略过这一步骤,但您必须确保dns的配置是正确并且可靠的,否则slockd将不能工作!

2、测试slockd

启动slockd 

# /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@foo.com --to test@bar.com

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

action=554 blocked using zen.spamhaus.org, see http://bl.extmail.org/cgi/rbl?192.168.0.1

设置slockd开机自启动 

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

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

3、配置Postfix

slockd调试正常后,必须配置postfix以使其打开对slockd的支持。 

编辑main.cf文件

# vi /etc/postfix/main.cf 

将 check_policy_service inet:127.0.0.1:10030 这一行记录增加到smtpd_recipient_restrictions 里,例如: 

smtpd_recipient_restrictiOns=

        permit_mynetworks,

        permit_sasl_authenticated,

        reject_non_fqdn_hostname,

        reject_non_fqdn_sender,

        reject_non_fqdn_recipient,

        reject_unauth_destination,

        reject_unauth_pipelining,

        reject_invalid_hostname,

        check_policy_service inet:127.0.0.1:10030

重新启动postfix以使配置生效 

# service postfix restart 

注意事项: 上述配置是将slockd的查询放到最后,这也是进一步提高资源利用律的办法,因为有部分功能postfix已实现了,所以就先由postfix检测,如果检测不到再由slockd完成。 

----------------------------------------------------------------------------------------------------

十四、配置dspam

1、安装dspam

# yum install dspam-mysql 

2、导入 DSPAM 训练库

# cd /root/

# wget http://www.extmail.org/download/misc/dspam/dspam-trained-data.sql.gz

# gzip -d dspam-trained-data.sql.gz

# rm -rf /var/lib/mysql/dspam/ (备注:如果没有dspam的库,可以不用执行)

# mysql -u root -p -e "create database dspam"

# mysql -u root -p -e "grant all on dspam.* to dspam@localhost identified by 'dspam'" 

# mysql -u dspam -p dspam dspam < /root/dspam-trained-data.sql 

DSPAM的token数据库的定时清理: 

# crontab -e 

加入以下内容:

0 0 * * * /usr/bin/mysql -u dspam -p'dspam' dspam < /usr/share/dspam/sql/mysql/purge.sql

0 0 * * * /usr/bin/dspam_logrotate -a 30 -d /var/spool/dspam/data

3、配置 dspam.conf 文件

# vi /etc/dspam/dspam.conf 

变动内容如下:

DeliveryHost        127.0.0.1

DeliveryPort        10024

DeliveryIdent       localhost

DeliveryProto       SMTP

Trust extmail

----------------

Preference "signatureLocation=headers"  # 'message' or 'headers'

Preference "showFactors=off"

MySQLUIDInSignature    on

MySQLServer             /var/lib/mysql/mysql.sock

MySQLUser               dspam

MySQLPass               dspam

MySQLDb                 dspam

MySQLCompress           true

----------------

MySQLConnectionCache   10

----------------

ServerPort              10028

ServerQueueSize 32

ServerPID               /var/spool/dspam/dspamd.pid

ServerMode              auto

ServerPass.Relay1       "secret"

ServerParameters        "--user extmail --deliver=innocent,spam"

ServerIdent             "localhost.localdomain"

ClientHost      127.0.0.1

ClientPort      10028

ClientIdent     "secret@Relay1"

------------------

3、启动 dspam 进程

# chkconfig dspamd on

# service dspamd start 

查看dspam启动进程

# ps aux |grep dspam 

显示以下内容: 

dspam    18407  0.0  0.5  5452 1344 pts/0    S    19:16   0:00 /usr/sbin/dspamd --daemon

root     18412  0.0  0.2  5140  668 pts/0    S+   19:17   0:00 grep dspamd

4、修改main.cf文件

# vi /etc/postfix/main.cf 

增加以下内容: 

header_checks = regexp:/etc/postfix/dspam_header_checks

设置邮件标题过滤管理 以防止重复X-DSPAM-Signature标题,可以防止签名被报道为垃圾。这发生在当你从一个已经运行Dspam的服务器收到邮件,或被用于通过伪造的、滥发邮件来阻止你训练数据库, 

# vi /etc/postfix/dspam_header_checks 

增加以下内容: 

/^(X-DSPAM-.*)/ IGNORE

/^(X-Spam-.*)/  IGNORE

重启postfix :

# service postfix restart 

5、编辑 amavisd.conf 文件

# vi /etc/amavisd/amavisd.conf 

增加以下内容: 

$dspam = '/usr/bin/dspam';

@spam_scanners = (

    ['SpamAssassin', 'Amavis::SpamControl::SpamAssassin'],

    ['DSPAM',  'Amavis::SpamControl::ExtProg', $dspam,

      [ qw(--client --stdout --deliver=spam,innocent --mode=teft --user extmail)],

    ],

);

SA增加DSpam插件:

# cd /usr/lib/perl5/vendor_perl/5.8.8/Mail/SpamAssassin/Plugin/

# wget http://www.extmail.org/download/misc/dspam/dspam.pm

编辑 local.cf 文件 

# cd /etc/mail/spamassassin/

# wget http://www.extmail.org/download/misc/dspam/dspam.cf

# vi local.cf 

在下面增加以下内容:

include dspam.cf

编辑 init.pre 文件:

# vi init.pre 

在下面增加以下内容:

loadplugin Mail::SpamAssassin::Plugin::dspam

重启amavisd 

# service amavisd restart 

6、增加 extmail 的垃圾邮件举报

说明:Extmail 1.0.9正式加入垃圾邮件举报功能,主要基于(xueron)的补丁包,并进行了一定的调整,使该功能可以兼容DSPAM及Spamassassin两种内容过滤软件的训练。Extmail1.1.1加入(stvictor)提供的spamassassin举报功能,感谢!

修改 webmail.cf 

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

主要变动的内容如下: 

SYS_SPAM_REPORT_ON  = 1

SYS_SPAM_REPORT_TYPE = dspam

设置maidrop的全局过滤 

# vi /etc/maildroprc 

内容如下: 

# Decoder for high quality key word filtering

# Author: hzqbbc - ExtMail Dev Team

DECODER="/var/www/extsuite/extmail/tools/decode -v"

if ((/^(From|Sender|Return-Path):.*MAILER\-DAEMON/))

{

  BADSENDER=1

}

# Custom filter and auto deliver to Junk mailbox support

# need test command and other Unix command

`test -f $HOME/.mailfilter && exit 1 || exit 0`

# No customize filtering rules

if ( $RETURNCODE == 0 )

{

  if (/^X-Spam-Flag:.*YES/ || /^X-DSPAM-Result:.*Spam/)

  {

    exception {

      to "$HOME/Maildir/.Junk/."

    }

  }

}

7、配置DSPAM Web 界面

安装相关的rpm包:

# yum install perl-GDGraph

# yum install perl-GD-Graph3d

# yum install dspam-web 

创建dspam-web 认证用户:

# cd /usr/share/dspam/webui/cgi-bin

# echo "extmail" > admins

# htpasswd -c .htpasswd extmail 

输入认证密码 

New password: 

Re-type new password: 

Adding password for user extmail

启动 dspam-web 守护进程

# service dspam-webd start 

这实际是启动了mini_httpd进程,查看 mini_httpd 是否启动正常:

# ps aux |grep mini 

显示以下内容: 

dspam    18580  0.0  0.3  4152  820 ?        Ss   20:05   0:00 mini_httpd -C /etc/dspam/webui.conf

root     18582  0.0  0.2  5316  668 pts/0    S+   20:05   0:00 grep mini

重启 apache 

# service httpd restart 

访问 dspam-web

http://mail.example.com/dspam

输入你在 .htpasswd 文件中创建的用户和密码 


推荐阅读
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • PHP组合工具以及开发所需的工具
    本文介绍了PHP开发中常用的组合工具和开发所需的工具。对于数据分析软件,包括Excel、hihidata、SPSS、SAS、MARLAB、Eview以及各种BI与报表工具等。同时还介绍了PHP开发所需的PHP MySQL Apache集成环境,包括推荐的AppServ等版本。 ... [详细]
  • Tomcat安装与配置教程及常见问题解决方法
    本文介绍了Tomcat的安装与配置教程,包括jdk版本的选择、域名解析、war文件的部署和访问、常见问题的解决方法等。其中涉及到的问题包括403问题、数据库连接问题、1130错误、2003错误、Java Runtime版本不兼容问题以及502错误等。最后还提到了项目的前后端连接代码的配置。通过本文的指导,读者可以顺利完成Tomcat的安装与配置,并解决常见的问题。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • Oracle Database 10g许可授予信息及高级功能详解
    本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
  • 禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
    VNCViewerforMac是一款运行在Mac平台上的远程桌面工具,vncviewermac版可以帮助您使用Mac的键盘和鼠标来控制远程计算机,操作简 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • 腾讯安全平台部招聘安全工程师和数据分析工程师
    腾讯安全平台部正在招聘安全工程师和数据分析工程师。安全工程师负责安全问题和安全事件的跟踪和分析,提供安全测试技术支持;数据分析工程师负责安全产品相关系统数据统计和分析挖掘,通过用户行为数据建模为业务决策提供参考。招聘要求包括熟悉渗透测试和常见安全工具原理,精通Web漏洞,熟练使用多门编程语言等。有相关工作经验和在安全站点发表作品的候选人优先考虑。 ... [详细]
  • Apache Shiro 身份验证绕过漏洞 (CVE202011989) 详细解析及防范措施
    本文详细解析了Apache Shiro 身份验证绕过漏洞 (CVE202011989) 的原理和影响,并提供了相应的防范措施。Apache Shiro 是一个强大且易用的Java安全框架,常用于执行身份验证、授权、密码和会话管理。在Apache Shiro 1.5.3之前的版本中,与Spring控制器一起使用时,存在特制请求可能导致身份验证绕过的漏洞。本文还介绍了该漏洞的具体细节,并给出了防范该漏洞的建议措施。 ... [详细]
  • 项目运行环境配置及可行性分析
    本文介绍了项目运行环境配置的要求,包括Jdk1.8、Tomcat7.0、Mysql、HBuilderX等工具的使用。同时对项目的技术可行性、操作可行性、经济可行性、时间可行性和法律可行性进行了分析。通过对数据库的设计和功能模块的设计,确保系统的完整性和安全性。在系统登录、系统功能模块、管理员功能模块等方面进行了详细的介绍和展示。最后提供了JAVA毕设帮助、指导、源码分享和调试部署的服务。 ... [详细]
author-avatar
手机用户2602896875
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有