ExtMail服务器社区's Archiver

grass_h 发表于 2005-12-29 08:33

搭建基于Postfix的WEB MAIL系统-Extmail、postfix、Courier-imap、Zeus、MailScanner

搭建基于Postfix的WEB MAIL系统
(Postfix+courier-imap+cyrus-sasl2+Extmail+Extman+Zeus_Web_Server+spamassassin+Clamav+mailscanner)

作者:Grass_h
E-Mail:mrhuo at sohu dot com
QQ:31340564

*文章可转载,但请注明出处,最初发表于[url]www.extmail.org[/url]
PS:最好保留作者信息,以方便交流

----以下文档尽可能的保证描述及配置的正确性,因本人水平有限,会造成一些描述及对相关概念的理解上的错误,请各位见谅及指明我会立即做出相应修改,并在以后会逐步完善及增加新的模块。因为UNIX系统下的MAIL系统的搭建涉及到相关技术太多,无法一一做出说明,如需其他相关信息可参考其他资料或与我联系。

测试环境:VMware workstation,FreeBSD 5.4

软件:软件基本上都使用ports安装。
     MAIL Server部分使用Postfix+courier-imap+cyrus-sasl2+Mysql;防病毒邮件部分使用spamassassin+Clamav+mailscanner。主要参考了杨廷勇先生的《基于FreeBSD和Postfix的邮件系统与邮件列表的web mail安装4.51》。[url]www.toping.net[/url]
     WEB Mail和MAIL Admin部分使用hzqbbc开发的Extmail系列系统,主要参考hzqbbc的Extmail相关文档。[url]www.extmail.org[/url]
     WEB Server使用Zeus Web Server 4.3R1 For FreeBSD 5.X。[url]www.zeus.com[/url]
     在此对以上两位DX及我在安装这套系统时对我提供支持的朋友表示感谢!
实现功能:多域名,WebMail、防邮件病毒、邮件用户WEB管理界面

安装步骤:

一、安装VMware workstation。(步骤略,具体安装及使用可参考[url]www.vmware.cn[/url])

二、安装FreeBSD 5.4
   采用光盘安装方式,除正常mount point外单独分出一个/data来放置所有的数据文件,独立的数据point主要是个人习惯,及考虑以后管理上的方便。
   选择MINI方式安装并添加compat4x、man、ports、src、cvsup-without-gui。
   配置网络参数,启用ssh
   安装完后重新启动服务器,这样操作系统部分安装完毕。

三、操作系统安装以后的配置
   按照自己的使用习惯来设置相应的环境变量。
   根据应用的需要及自己服务器的配置来做出相应的内核优化,具体步骤及方法请参考《freebsd 用户手册》。

四、升级ports
   ee /usr/share/examples/cvsup/ports-supfile
   修改为*default host=cvsup.freebsd.org  #相关CVSUP服务器列表可以从[url]www.freebsd.org[/url]获得
   cvsup /usr/share/examples/cvsup/ports-supfile  #升级ports

五、安装Mysql
   cd /usr/ports/databases/mysql41-server
   make WITH_LINUXTHREADS=yes BUILD_OPTIMIZED=yes BUILD_STATIC=yes install clean    #加入优化参数
   安装完以后并没有/etc/my.cnf文件,虽然可以运行,但是最好还是建立一个以对你的机器做出相应的优化。
   cd /usr/local/share/mysql
   此文件夹下有my-huge.cnf、my-large.cnf、my-medium.cnf、my-small.cnf四个文件,根据你的服务器的配置使用相应的文件,只需要复制到/etc/my.cnf就可以了,如需做其他调整修改这个文件就行了。
   mkdir /data/mysqldb       #以后用来放置我们的数据库文件
   chown -R mysql:mysql /data/mysqldb
   ee /etc/rc.conf,加入:
   mysql_enable="YES"  #mysql启动项
   mysql_dbdir="/data/mysqldb"
   存盘后退出
   sh /etc/rc   #不开机重新加载/etc/rc.conf配置
   mysqladmin -u root -p password password   #更改mysql的root密码为password
   
六、安装php4
   本套系统本身并没有使用到php相关技术,只因为需要使用phpMyAdmin管理mysql,但不是必须
   cd /usr/ports/www/php4-cgi  #因为zeus使用fast-cgi模式调用PHP
   make install clean
   选择FASTCGI、PATHINFO、MULTIBYTE  #如因选择错误而导致需重新安装时,在ports目录中make后不会再出现选择菜单,这时可以到/var/db/ports中删除相应的目录后即可重新make
   cp /usr/local/etc/php.ini-dist /usr/local/etc/php.ini
   cd /usr/ports/lang/php4-extensions
   make install clean
   根据需要选择相应的组件,一般除默认选项增加gd、gettext即可
   如需安装zend optimized可到[url]www.zend.com[/url]注册用户后下载相应软件包安装即可,安装程序将修改php.ini,如zend optimized正确安装后PHP不能正常调用,比较典型的问题是因为在安装php的时候选择了debug,重新安装php即可
   
七、安装zeus web server
   登录[url]www.zeus.com[/url],注册一个用户,下载相应的软件包,并下载试用license,将下载的软件包上传至服务器,并解压缩
   ./zinstall
   其中会要求你输入key的路径,即下载的试用license
   按照提示安装即可,zeus web admin的地址为[url]http://YourIP:9090[/url],用户名为admin
   进入管理界面后点击Licensing查看license安装是否正确

八、设置zeus web server的PHP
   /usr/local/zeus/stop-zeus  #停止zeus服务
   cd /usr/local/zeus/web/php
   mv php php.old  #备份zeus自带的php
   ln -s /usr/local/bin/php /usr/local/zeus/web/php/php
   /usr/local/zeus/start-zeus  #启动zeus服务
   mkdir /data/web  #建立web文档目录
   echo "<?phpinfo()?>" > /data/web/index.php  #建立php测试页
   进入zeus web admin,Create-Virtual Server
   设置相应主机参数后进入主机设置界面
   Third Party\php -> Enabling PHP Support\enable -> Apply Changes
   API Support -> FastCGI -> Security Configurables\Owner of the requested file -> Apply Changes  #设置运行脚本的用户为文件的owner
   在页的最上面This configuration has been modified. Click here for details or to make it take effect. -> Commit
   测试刚建立的主机,如测试页运行正常即可说明php能够被zeus成功调用
   
九、安装并设置phpMyAdmin
   cd /usr/ports/databases/phpmyadmin
   make install clean    #如果你的mysql版本是5.X则选择MYSQLI,如为4.X则不选;openssl建议也不要选,因为反复装了几次发现有的时候php加载openssl模块后在zeus下会有问题,具体原因不是很清楚。如果有问题可以在/usr/local/etc/php/extensions.ini文件中将openssl模块禁用。
  cp -R /usr/local/www/phpMyAdmin /data/web/
   cd /data/web/phpMyAdmin
   cp config.default.php config.inc.php
   ee config.inc.php
   修改$cfg[&#39;PmaAbsoluteUri&#39;] = &#39;&#39; 为URL路径;$cfg[&#39;Servers&#39;][$i][&#39;auth_type&#39;]=&#39;http&#39;更改登录验证模式为HTTP
   此时输入phpMyAdmin地址应该弹出要求输入用户名及密码的对话框,输入正确后即可登录
   
十、安装CGI的DBI DBD
   因为extmail和extman需要cgi的DBI和DBD支持,还有zeus已经内置了perl 5.8.6所以只需要安装模块即可
  ee ~/.cshrc
   加入setenv       ZEUSHOME       /usr/local/zeus
   exit并重新以root用户登录
  echo $ZEUSHOME
   下载CGI的DBI及DBD包,并解压缩,注意DBD相应版本
  安装DBI,进入解压缩后的目录,/usr/local/zeus/zperl/bin/perl Makefile.PL,make ,make test ,make install
   安装DBD,进入解压缩后的目录,/usr/local/zeus/zperl/bin/perl Makefile.PL,make ,make test ,make install,其中在make test的时候会有一个error,不用理直接make install即可

----如果以上步骤都没有问题,那么恭喜您已经在FreeBSD平台上搭建了一套WEB SERVER,并可以支持CGI、PHP,后台数据库使用mysql,只需要再加一个FTP Server就可以成为一套虚拟主机系统了。
----如果以上都没有问题即可以往下进行,下面即将开始安装及设置MAIL Server相关服务

十一、设置数据库
   从[url]www.extmail.org[/url]下载最新的软件包,其中extman中有我们现在需要的建库脚本,docs/extmail.sql(建库脚本)、init.sql(增加测试用户和管理用户)
   extmail.sql为新建一个数据库extmail,并建立两个mysql系统用户extmail和webman
   如果需要使用已有的数据库只需要其中建库的脚本,并复制到phpmyadmin中在相应数据库下运行
  导入extmail.sql
   mysql -u root -ppassword < extmail.sql
   导入init.sql
   进入phpmyadmin修改extmail及webman用户的密码
  mysql -u root -ppassword extmail < init.sql
   init.sql会建立[email]test@extmail.org[/email]测试帐号,密码为test;[email]root@extmail.org[/email]为extman管理员帐号,密码为extmail
   **init.sql脚本建立的用户的UID和GID是1000,需要改成125,即和postfix用户相同,否则会有权限问题
             
十二、安装Courier-imap,支持POP3/IMAP4
   cd /usr/ports/mail/courier-imap
   make install clean
   选择OPENSSL和AUTH_MYSQL
   ee /etc/rc.conf,根据安装完最后的提示信息加入:
  courier_authdaemond_enable="YES"
   courier_imap_pop3d_enable="YES"
   courier_imap_imapd_enable="YES"
   存盘退出
  cd /usr/local/etc/courier-imap
   cp imapd.cnf.dist imapd.cnf
   cp pop3d.cnf.dist pop3d.cnf  
   /usr/local/etc/rc.d/courier-authdaemond.sh start
   启动courier-authdaemond进程
   chmod +x /var/run/authdaemond

十三、安装Cyrus SASL2,通过Cyrus-SASL对存储在MySQL数据库中的用户进行认证
  cd /usr/ports/security/cyrus-sasl2
   make  WITH_AUTHDAEMON=yes install clean
   ee /usr/local/lib/sasl2/smtpd.conf #以验证SMTP,内容如下:
  pwcheck_method: authdaemond
   log_level: 3
   mech_list: PLAIN LOGIN
   authdaemond_path:/var/run/authdaemond/socket
   
十四、安装postfix,MTA服务器
  cd /usr/ports/mail/postfix
   make install clean
   选择sasl2、mysql、tls、vda
   安装过程中会提示:
   You need user "postfix" added to group "mail".Would you like me to add it [y]? y
   Would you like to activate Postfix in /etc/mail/mailer.conf [n]? n
   根据提示在/etc/rc.conf中加入:

  sendmail_enable="YES"
   sendmail_flags="-bd"
   sendmail_pidfile="/var/spool/postfix/pid/master.pid"
   sendmail_procname="/usr/local/libexec/postfix/master"
   sendmail_outbound_enable="NO"
   sendmail_submit_enable="NO"
   sendmail_msp_queue_enable="NO"
                           
   mv /usr/sbin/sendmail /usr/sbin/sendmail.old
   ln -s /usr/local/sbin/sendmail /usr/sbin/sendmail
   echo ‘postfix: root’ >> /etc/aliases   #冒号和root中间为tab
   /usr/local/bin/newaliases
   chown postfix:postfix /etc/opiekeys

十五、配置postfix
   ee /usr/local/etc/postfix/main.cf #编辑postfix配置文件
   
  smtpd_helo_required = yes
   strict_rfc821_envelopes = yes
   smtpd_etrn_restrictions = permit_mynetworks, reject
   #=====================BASE基本配置=====================
   myhostname = mail.extmail.org                                     #主机名
  mydomain = extmail.org                                            #默认的域名
  mydestination = $myhostname
   local_recipient_maps =
   command_directory = /usr/local/sbin
   local_transport = virtual
   #=====================MySQL虚拟用户配置=====================
   virtual_alias_maps = mysql:/usr/local/etc/postfix/mysql_virtual_alias_maps.cf
   virtual_uid_maps = static:125                               #虚拟用户的UID
   virtual_gid_maps = static:125                               #虚拟用户的GID
   virtual_minimum_uid = 125                                    #认可的最小的UID号
  virtual_mailbox_base = /data/mail                            #邮件保存的目录
  virtual_mailbox_domains = mysql:/usr/local/etc/postfix/mysql_virtual_domains_maps.cf
   virtual_mailbox_limit = 51200000
   virtual_mailbox_maps = mysql:/usr/local/etc/postfix/mysql_virtual_mailbox_maps.cf
   virtual_transport = virtual
   #=====================Quota MAIL磁盘限额=====================
   virtual_create_maildirsize = yes
   virtual_mailbox_extended = yes
   virtual_mailbox_limit_maps = mysql:/usr/local/etc/postfix/mysql_virtual_limit_maps.cf
   virtual_mailbox_limit_override = yes
   virtual_maildir_limit_message = Sorry, the user&#39;s maildir has overdrawn his diskspace quota, please try again later.
   virtual_overquota_bounce = yes
   #====================SASL认证=====================
   smtpd_sasl_auth_enable = yes                                  #启用认证
  smtpd_sasl_security_options = noanonymous                     #不允许匿名用户
  broken_sasl_auth_clients = yes                               #支持OE等非标准客户端
  smtpd_delay_reject = yes
   smtpd_recipient_restrictions = permit_sasl_authenticated,permit_auth_destination,reject
   smtpd_client_restrictions = permit_sasl_authenticated
   
   建立/data/mail文件夹,并更改所有者及组为postfix
   复制extman的docs目录中的mysql_virtual_alias_maps.cf、mysql_virtual_domains_maps.cf、mysql_virtual_limit_maps.cf、mysql_virtual_mailbox_maps.cf四个文件到/usr/local/etc/postfix/
   并修改每个文件中的数据库连接信息,以与你的设置相同

十六、配置Courier-imap
   修改/usr/local/etc/courier-imap/imapd

   IMAP_CAPABILITY="IMAP4rev1 CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA"

   修改/usr/local/etc/courier-imap/pop3d

   POP3AUTH="LOGIN CRAM-MD5 CRAM-SHA1"    

   cd /usr/local/et/authlib
   mv authmysqlrc authmysqlrc.bak
   ee authmysqlrc  #新建courier-imap的mysql配置文件,内容如下:
   
  MYSQL_SERVER    localhost
   MYSQL_USERNAME  extmail
   MYSQL_PASSWORD  passowrd
   MYSQL_PORT      0
   MYSQL_OPT       0
   MYSQL_DATABASE  extmail
   MYSQL_USER_TABLE       mailbox
   MYSQL_CRYPT_PWFIELD    password
   MYSQL_UID_FIELD &#39;125&#39;
   MYSQL_GID_FIELD &#39;125&#39;
   MYSQL_LOGIN_FIELD       username
   MYSQL_HOME_FIELD       concat(&#39;/data/mail/&#39;, homedir)
   MYSQL_NAME_FIELD       name
   MYSQL_MAILDIR_FIELD    concat(&#39;/data/mail/&#39;, maildir)
   MYSQL_QUOTA_FIELD       quota

   mv authdaemonrc authdaemonrc.bak
   ee authdaemonrc
   
   authmodulelist="authmysql"
   authmodulelistorig="authmysql"
   version="authdaemond.mysql"
   daemons=5
   authdaemonvar=/var/run/authdaemond
   subsystem=mail
   DEBUG_LOGIN=0
   DEFAULTOPTIONS="wbnodsn=1"

十七、建立测试用户的相关目录
   mkdir -p /data/mail/extmail.org/test  #根据main.cf中mysql虚拟用户配置中邮件保存目录和数据库中此用户的homedir设置
   /usr/local/bin/maildirmake /var/mail/extmail.org/test/Maildir  #建立用户的mail保存目录
   chown -R postfix:postfix /data/mail    #改变/data/mail目录的owner,给postfix权限
   
----到这里最基本的Mail系统已经搭建完毕了,重新启动服务器后可以试着用telnet或是pop3客户端收一下信了,如果有问题可以tail -f /var/log/maillog监控日志后调试,如果像我一样只是测试的环境还需要自己来做一个DNS服务器来测试一下是否可以正常收信


十八、安装并配置extmail,WEB Mail
   我们将extmail的原文件复制到/data/webmail/extmail/,注意这不是网站的/目录将来会用alias方式设置到网站上
   1、设置zeus
      打开刚才建立的那个主机的设置界面
   API Support->CGI->General->Enable->Apply Changes   启用CGI
      API Support->CGI->Sandboxing->Security Configurables->Run CGIs as owner of the requested file->Apply Changes
      URL Handling->URL Mappings->Add a Directory Alias下有两个对话框,上面是http路径,下面是系统路径,做相关设置后->Apply Changes
      **设置如下/extmail/->/data/webmail/extmail/html/,/extmail/cgi/->/data/webmail/extmail/cgi/
      This configuration has been modified. Click here for details or to make it take effect.->Commit
      **基本设置完毕,剩下的就是设置一些LOG了,建议关闭不用的API,还有在Directory Requests->Directory Listing中设置目录浏览,因为安全的问题建议关闭
   2、chown -R postfix:postfix /data/webmail/extmail
     3、cp webmail.cf.default webmail.cf   #extmail配置文件
   4、编辑webmail.cf,主要修改如下配置

   SYS_CONFIG = /data/webmail/extmail/
      SYS_LANGDIR = /data/webmail/extmail/lang
      SYS_TEMPLDIR = /data/webmail/extmail/html
      SYS_MAILDIR_BASE = /data/mail
      SYS_MYSQL_USER = extmail
      SYS_MYSQL_PASS = password
      SYS_MYSQL_DB = extmail
      SYS_MYSQL_HOST = localhost
      SYS_MYSQL_SOCKET = /tmp/mysql.sock    #在FB下默认的mysql.sock目录是在/tmp/mysql.sock

   5、使用浏览器登录测试
   
十九、安装并配置extman,管理工具
   将原文件复制到/data/webmail/extman/
   1、设置zeus
      URL Handling->URL Mappings->Add a Directory Alias
      /extman/->/data/webmail/extman/html/,/extman/cgi/->/data/webmail/extman/cgi/
   2、chown -R postfix:postfix /data/webmail/extmail
   3、编辑webman.cf,和extmail的配置基本一致,其中有一项是设置临时的session目录,需新建,还有如下:
      SYS_MIN_UID = 125                              #系统最小UID       
      SYS_MIN_GID = 125                              #系统最小GID
      SYS_DEFAULT_UID = 125                         #默认UID
      SYS_DEFAULT_GID = 125                         #默认GID
   4、建立extman的库文件
      cd /data/webmail/extman/libs/Ext
      ./buildlink.sh clean
      ./buildlink.sh build /data/mail/webmail/extmail/libs/Ext/
   5、chown -R postfix:postfix /data/webmail/extman
   6、使用浏览器登录测试

----以上支持web mail的系统已经建立好了
----以下为防病毒邮件部分,是转杨先生的文章,原文中少了一步,复制/usr/local/etc/rc.d/mailscanner.sh.sample->mailscanner.sh,否则mailscanner起动不了,所有的收或发的邮件都会被drop掉。还有杨先生改的mailscanner的中文提示包中少了一个rejection.report.txt启动会报错,可以从en文件夹中找到这个文件名的文件自己翻译一下吧,或是touch一个空的也行。



5.1 安装Clamav
mail# cd /usr/ports/security/clamav
mail# make install clean

我的选择:
[X] MILTER    Compile the milter interface
[X] CURL      Support URL downloading
[X] LIBUNRAR  Support for external Unrar library

要想clamav能自动的启动请在/etc/rc.conf中加入:
clamav_clamd_enable="YES"
clamav_freshclam_enable="YES"

重启服务器

测试杀毒
mail# clamscan -r -i /usr/local/www/data

----------- SCAN SUMMARY -----------
Known viruses: 41293
Engine version: 0.87.1
Scanned directories: 53
Scanned files: 602
Infected files: 0
Data scanned: 41.51 MB
Time: 18.294 sec (0 m 18 s)

升级病毒库
mail# freshclam
ClamAV update process started at Sun Dec  4 01:10:02 2005
main.cvd is up to date (version: 34, sigs: 39625, f-level: 5, builder: tkojm)
daily.cvd is up to date (version: 1200, sigs: 1669, f-level: 6, builder: tomek)

5.2 安装MailScanner
mail# cd /usr/ports/mail/mailscanner
mail# make install

第一次执行安装因此需执行make initial-config以建立基本配置文件

mail# make initial-config
mail# make clean

5.3 安装SpamAssassin
mail# cd /usr/ports/mail/p5-Mail-SpamAssassin
mail# make install clean

我的选择:
[X] AS_ROOT       Run spamd as root (recommended)
[X] DOMAINKEYS    DomainKeys support
[X] SSL            Build with SSL support for spamd/spamc
[X] MYSQL          Add MySQL support
[X] RAZOR          Add Vipul&#39;s Razor support
[X] SPF_QUERY      Add SPF query support
[X] RELAY_COUNTRY  Relay country support
[X] TOOLS          Install SpamAssassin tools

5.4修改Postfix设定档main.cf
mail# ee /usr/local/etc/postfix/main.cf
#header_checks = regexp:/usr/local/etc/postfix/header_checks      //默认值
header_checks = regexp:/usr/local/etc/postfix/header_checks       //把注释去掉

编辑/usr/local/etc/postfix/header_checks
mail# ee /usr/local/etc/postfix/header_checks
/^Received:/ HOLD                                                 //新加入,意思为新邮件全部放到/var/spool/postfix/hold目录中,等候mailscanner处理

5.5修改mailscanner.conf
mail# ee /usr/local/etc/MailScanner/MailScanner.conf
#Run As User =                //默认值
Run As User = postfix         //修改后
#Run As Group =               //默认值
Run As Group = postfix       //修改后
#Incoming Queue Dir = /var/spool/mqueue.in       //默认值
Incoming Queue Dir = /var/spool/postfix/hold      //修改后
#Outgoing Queue Dir = /var/spool/mqueue          //默认值
Outgoing Queue Dir = /var/spool/postfix/incoming  //修改后
#MTA = sendmail               //默认值
MTA = postfix                //修改后
#Virus Scanners = none       //默认值
Virus Scanners = clamav       //修改后
#Use SpamAssassin = no       //默认值
Use SpamAssassin = yes       //修改后

5.6新增MailScanner所要用到的资料夹
mail# mkdir /var/spool/MailScanner
mail# mkdir /var/spool/MailScanner/incoming
mail# mkdir /var/spool/MailScanner/quarantine
mail# chown postfix:postfix /var/spool/MailScanner/incoming
mail# chown postfix:postfix /var/spool/MailScanner/quarantine
mail# touch /usr/local/etc/MailScanner/rules/bounce.rules  //新建一个空白文件,要不然会出错。
mail# chmod –R 777 /var/spool/postfix
mail#cp /usr/local/etc/MailScanner/mcp/10_example.cf.sample /usr/local/etc/MailScanner/mcp/10_example.cf
mail#cp /usr/local/etc/MailScanner/mcp/mcp.spam.assassin.prefs.conf.sample /usr/local/etc/MailScanner/mcp/mcp.spam.assassin.prefs.conf
注:这里的倒数一、二行实际操作中为一行

重新启动服务器

测试病毒过滤:

mail# telnet localhost 25
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is &#39;^]&#39;.
220 mail.toping.net ESMTP Postfix
mail from:webmaster@toping.net
250 Ok
rcpt to:webmaster@toping.net
250 Ok
data
354 End data with <CR><LF>.<CR><LF>
Subject:Virus test

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

.
250 Ok: queued as F0C221CC20       //出现F0C221CC20这行表示mailscanner运行成功了
quit
221 Bye
Connection closed by foreign host.

5.7把病毒提示信息改为中文

预设系统提示信息为英文,可以下载我修改的中文包。

[url]http://mail.toping.net/mailscanner/cn.rar[/url]

注:把下载下来的文件解压后放到/usr/local/share/MailScanner/reports/cn下面去

mail# ee /usr/local/etc/MailScanner/MailScanner.conf
#%report-dir% = /usr/local/share/MailScanner/reports/en  //默认值(加载英文)
%report-dir% = /usr/local/share/MailScanner/reports/cn  //修改后为读取中文

5.8.用MailScanner来监管进出邮件
mail# ee MailScanner.conf
Archive Mail = %rules-dir%/archive.rules  
mail# ee archive.rules

方法一:互相备份, 以上这样并不会造成 loop
FromOrTo: [email]a@toping.net[/email]  yes forward [email]b@toping.net[/email]
FromOrTo: [email]b@toping.net[/email] yes forward [email]a@toping.net[/email]

方法二:可以 forward 到复数信箱
FromOrTo: [email]a@toping.net[/email] yes forward [email]b@toping.net[/email] [email]c@toping.net[/email] [email]d@toping.net[/email]

方法三:同时备份到一个或多个档案及一个或多个信箱
FromOrTo: [email]a@toping.net[/email] yes forward /var/spool/MailScanner/archive/a_user_backup.mbx /var/spool/MailScanner/archive/a_user_backup.mbx [email]b@toping.net[/email] [email]scyz2@163.com[/email]
注:以上为一行,该档案要先建立且确定该档案拥有者与 MailScanner.conf 的 Run As User = XXXXXXX 相同

方法四:备份到数据夹及多个信箱或档案
FromOrTo: [email]a@toping.net[/email] yes forward /var/spool/MailScanner/archive/ [email]b@toping.net[/email] [email]scyz2@163.com[/email]  /var/spool/MailScanner/archive/a_user_backup.mbx
注:以上为一行,权限同SAMPLE3;注意事项, 他会依日期再分数据夹, 日期数据夹内的文件名称 mail queue ID, 格式为 postfix mail queue 格式



                       2005年12月29日,写于北京家中
                       本文送给所有喜爱FreeBSD和Postfix的朋友和自己
                           PS:据hzqbbc说现在extmail系统已经成功在apache, lighttpd运行了,再加一个zeus,呵呵

grass_h 发表于 2005-12-29 08:38

以下为根据自己理解做的几个简单的流程,不知道是不是又会出现理解上的错误,呵呵,
感觉写这类配置文档的朋友比较多,但是文件、软件调用的流程比较少
知道具体的调用过程对以后的维护及系统的升级都是有帮助,希望那位比较熟悉基于postfix邮件系统搭建的朋友指点一下

=================================
收信
MTA->main.cf->mysql_virtual_alias_maps.cf->mysql_virtual_domains_maps.cf->mysql_virtual_mailbox_maps.cf->mysql_virtual_limit_maps.cf->mysql->MAIL BOX
发信
MTA->sasl2->smtpd.conf->Courier-authdaemon->authdaemonrc->authmysqlrc->mysql->如果认证通过则发信
POP3
POP3-Client->Courier-pop3d->Courier-authdaemon->authdaemonrc->authmysqlrc->mysql->如果认证通过则收信
WEB
WEB-Client->mysql->mail box

grass_h 发表于 2005-12-29 08:49

以做纪念

grass_h 发表于 2006-1-18 02:32

amavisd-new+clamav+SpamAssassin+CBL-

**以下为在原文档基础上增加病毒和垃圾邮件过滤功能,需去掉原mailscanner的配置。需已安装好Postfix+courier-imap+cyrus-sasl2+Extmail+Extman+Zeus_Web_Server并调试正常。因为反垃圾邮件系统的建立需根据用户的需求不断的调整,所以本文档给出的配置值只是一些建议值,具体可根据自己的情况进行相关调整。

作者:Grass_h
E-Mail:mrhuo at sohu dot com
QQ:31340564

----以下文档尽可能的保证描述及配置的正确性,因本人水平有限,会造成一些描述及对相关概念的理解上的错误,请各位见谅及指明我会立即做出相应修改,并在以后会逐步完善及增加新的模块。因为UNIX系统下的MAIL系统的搭建涉及到相关技术太多,无法一一做出说明,如需其他相关信息可参考其他资料或与我联系。

测试环境:VMware workstation,FreeBSD 5.4
软件:软件全部使用ports安装。

安装步骤:

一、安装clamav
   #软件介绍:clamav是一款查病毒软件,目前可侦测超过40000种以上的病毒、蠕虫、木马,并且随时更新病毒库,而且这个防病毒软件是免费的。在本系统架构里,clamav主要负责病毒邮件的监控。
   cd /usr/ports/security/clamav
   make install clean
   选择MILTER、CURL、LIBUNRAR
   编辑/etc/rc.conf,加入
   clamav_clamd_enable="YES"    #以服务方式运行clamav
   clamav_freshclam_enable="YES"    #以服务方式运行病毒库更新程序
   编辑/usr/local/etc/clamd.conf
   查找User clamav,更改为User postfix。
   chown -R postfix:postfix /var/run/clamav
   
二、安装amavisd-new
   #软件介绍:amavisd-new本身也是一个简易的MTA,它是MTA和内容检查软件(如防病毒和垃圾邮件)之间的桥梁,它也可以和十多种杀毒软件和反垃圾系统配合来做相关的过滤。
   cd /usr/ports/security/amavisd-new
   make install clean
   编辑/etc/rc.conf,加入
   amavisd_enable="YES"    #以服务方式运行amavisd
   cd /usr/local/etc
   cp amavisd.conf-sample amavisd.conf    #覆盖原配置配置文件,.conf-sample配置起来比较有条理,把amavisd分为9部分来配置,同时提供的配置说明信息也要比原配置文件全
   编辑amavisd.conf
   
   $mydomain = &#39;example.com&#39;;   #更改为$mydomain = &#39;extmail.org&#39;;
   $daemon_user  = &#39;vscan&#39;;   #更改为$daemon_user  = &#39;postfix&#39;;
   $daemon_group = &#39;vscan&#39;;   #更改为$daemon_group = &#39;postfix&#39;;
   $final_virus_destiny      = D_BOUNCE;  #更改为$final_virus_destiny      = D_PASS; 这样用户收到病毒邮件时,邮件内容为amavisd的警告,并将原邮件以附件的形式发送给收信人
   $final_spam_destiny       = D_BOUNCE;  #更改为$final_spam_destiny       = D_PASS; 用户收到系统判定为垃圾邮件的信件时,会在主题上加入标记
   $sa_tag_level_deflt  = 2.0  #更改为$sa_tag_level_deflt  = -999,以使所有的邮件都有SA的打分
   $sa_tag2_level_deflt = 6.31   #更改为需要的值,超过这个分数的邮件会被在主题上加入标记,建议6~8
   # [&#39;ClamAV-clamd&#39;,
   #   \&ask_daemon, ["CONTSCAN {}\n", "/var/run/clamav/clamd"],
   #   qr/\bOK$/, qr/\bFOUND$/,
   #   qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],
   去掉以上四行前面的注释,以让amavisd-new调用clamav,在1674~1677行
   #$sa_spam_subject_tag = &#39;***SPAM*** &#39;;
   去掉注释,并更改“***SPAM***”为相应值,这是超过相应SA分值后amavisd在邮件主题上加入的标记,在1582行
   编辑完以后保存,因为涉及到的配置实在太多,而且也直接影响到用户是否可以正常收到邮件,因为水平有限不敢做太多说明,以上只是最基本的设置,如果配置完以后有问题可查看maillog,在我的配置过程中发生最多的情况就是权限的问题
   
   chown -R postfix:postfix /var/amavis
   chown -R postfix:postfix /var/virusmails   #这个目录是当收到的邮件被判定为病毒邮件时邮件存放的地址,如果按照上面的配置已经将病毒邮件都D_PASS了将不会再转存到此目录
   根据$virus_admin = "virusalert\@$mydomain";建立相应的病毒邮件管理员帐号,当此域中用户收到病毒邮件时会发信息给此用户,或注释此行
      
三、配置SpamAssassin
   #软件介绍:SpamAssassin是为邮件打分的软件,主要根据用户的设置,并通过内建的一套自学习系统(采用著名的贝式算法)打分。SA只对邮件打分,并不对邮件做任何操作,需要和amavisd等软件相结合以达到垃圾邮件过滤的功能。[url]http://www.yrex.com/spam/spamconfig.php[/url] 这个程序可以帮助用户生成配置文件。
   在安装amavisd-new时同时也安装好了SA
   编辑/etc/rc.conf,加入
   spamd_enable="YES"   #以服务方式运行SA
   因为是和amavisd配合使用,可以直接在/var/amavisd/.spamassassin目录下新建user_prefs文件,以下为我根据其他DX的建议尤其是对中文邮件过滤做过相关优化的配置,内容:
   
   use_bayes 1
   auto_learn 1
   auto_learn_threshold_nonspam -2
   auto_learn_threshold_spam 15
   ##################################################
   #Follow is diables some bad rules for chinese mail
   #################################################
   score SUBJ_FULL_OF_8BITS 0.0
   score BASE64_ENC_TEXT 0.0
   score BAYES_99 0.1
   score BAYES_90 0.1
   score BAYES_80 0.1
   score BAYES_70 0.1
   score BAYES_60 0.1
   score FROM_ILLEGAL_CHARS 0.1
   score HEAD_ILLEGAL_CHARS 0.1
   score SUBJ_ILLEGAL_CHARS 0.1
   score MIME_BASE64_TEXT 0.1
   score FAKE_HELO_AOL 0.1
   score NO_RDNS_DOTCOM_HELO 0.1
   score CHINA_HEADER 0.1

四、配置postfix

   编辑/usr/local/etc/postfix/main.cf
   加入content_filter=smtp-amavis:[127.0.0.1]:10024

   编辑/usr/local/etc/postfix/master.cf
   加入如下内容:
   smtp-amavis unix    -  -   n   -       2       smtp    #这行前面没有空格
   -o smtp_data_done_timeout=1200         #以-o开始的行需在行首加入空格
   -o smtp_send_xforward_command=yes
   -o disable_dns_lookups=yes
   -o max_use=20

   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_delay_reject=no
   -o smtpd_client_restrictions=permit_mynetworks,reject
   -o smtpd_helo_restrictions=
   -o smtpd_sender_restrictions=
   -o smtpd_recipient_restrictions=permit_mynetworks,reject
   -o mynetworks_style=host
   -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 smtpd_client_connection_count_limit=0
   -o smtpd_client_connection_rate_limit=0
   -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks

五、配置postfix使用anti-spam.org.cn的实时黑名单服务“CBL-”
   #说明:我们直接使用中国反垃圾邮件联盟提供的实时黑名单服务“CBL-”,[url]http://anti-spam.org.cn/services/rbl.php[/url]官方网站提供了更多的RBL相关信息。
   编辑/usr/local/etc/postfix/main.cf
   在smtpd_client_restrictions = 行下面加入
      reject_rbl_client cblless.anti-spam.org.cn
   
六、测试
   重新启动服务器
   发送邮件做相关测试

   SA测试代码:
   XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
   #放在邮件正文即可

   病毒测试代码:
   X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
   #放在邮件正文即可
   
   收邮件以查看amavisd是否工作正常,也可以先停掉amavisd后使用amavisd debug,以debug方式启动amavisd。
   PS:相关信息需查看邮件原代码。

flb_2001 发表于 2006-1-18 12:44

这个文章不好吗?怎么没有人顶呢?

ericzhao82 发表于 2006-1-18 13:35

老兄,文章是好

可惜我到现在还没有把Extmail搭建好呢

chifeng 发表于 2006-1-18 14:51

赞....写的不错,加精.....

grass_h 发表于 2006-2-1 14:20

谢谢大家支持。。。。

extmail 发表于 2006-2-1 14:47

[quote][b]下面是引用grass_h于2006-02-01 14:20发表的:[/b]
谢谢大家支持。。。。[/quote]

记得多上好文,这就是感谢大家支持的最好方式 :lol

grass_h 发表于 2006-2-9 23:24

终于从老家回来了,呵呵
本来在一朋友那里把机器系统做完了,想回来以后远程做其他的工作
结果今天上午打电话说朋友家里被水泡了,损失惨重,被泡了N多台服务器,好在俺的机器没事,但是线路什么的可能还需要几天恢复,只能等了,等的着急。。。。。。
看来以后还是得自己找正经托管的地方呀,要不这两天基本于EXTMAIL的系统就可以上线了,55555

extmail 发表于 2006-2-10 07:41

[quote][b]下面是引用grass_h于2006-02-09 23:24发表的:[/b]
终于从老家回来了,呵呵
本来在一朋友那里把机器系统做完了,想回来以后远程做其他的工作
结果今天上午打电话说朋友家里被水泡了,损失惨重,被泡了N多台服务器,好在俺的机器没事,但是线路什么的可能还需要几天恢复,只能等了,等的着急。。。。。。
看来以后还是得自己找正经托管的地方呀,要不这两天基本于EXTMAIL的系统就可以上线了,55555[/quote]

对啊,还是正规的idc保险些,出事也可以找赔偿。。

flb_2001 发表于 2006-2-12 20:01

zeus是收费的?有没有免费的呢?
或者不用zeus搭建的邮件系统怎么做呢?

extmail 发表于 2006-2-12 20:55

[quote][b]下面是引用flb_2001于2006-02-12 20:01发表的:[/b]
zeus是收费的?有没有免费的呢?
或者不用zeus搭建的邮件系统怎么做呢?[/quote]

postfix在中国版里置顶的文章就有好几个这样子的,楼上的兄弟可以参考。

myhstone 发表于 2007-7-16 00:02

好东西啊.
我喜欢zeus

页: [1]

Powered by Discuz! Archiver 7.0.0  © 2001-2009 Comsenz Inc.