- 论坛徽章:
- 0
|
FreeBSD8.0+postfix+sasl2+mysql+maildrop+ExtMan+Mailman+ClamAv完全安装
-------------------
Changelog 20091218
-------------------
增加 安装amavisd-new出现*** Error code 1错误解决方法
修正 https访问不正常提示没权限
增加 ports.tar直接使用,不用每次安装都要下载
增加 ExtMan/1.0.1后台显示freebsd-cmd
修正 ExtMan/1.0.1后台显示信息
增加 修改MYSQL数据库位置方法
修正 ExtMan/1.0.1后台图形日志没有开机启动
增加 修改WIN下面hosts文件,方便测试
增加 WEB配置,不仅仅只是邮件服务器
本文省略部分请看
FreeBSD7.0+postfix+sasl2+mysql+maildrop+ExtMan+Mailman+ClamAv完全安装
http://bbs3.chinaunix.net/thread-1119098-1-1.html
FreeBSD7.1+postfix+sasl2+mysql+maildrop+ExtMan+Mailman+ClamAv完全安装
http://bbs3.chinaunix.net/thread-1389722-1-1.html
FreeBSD邮件交流群QQ群: (1610895)
参考文章:
1. http://www.extmail.org/docs/extmail_solution_freebsd/
2. http://www.yiyou.org/docs/freebsd_postfix_03/
在本例中,机器名:mail.extmail.org
域名:extmail.org
默认网关:192.168.1.1
IP地址:192.168.1.8
整个邮件解决方案由如下软件组成:
功能模块 内容 备注
操作系统(OS) FreeBSD 是一个优秀的unix操作系统,基于宽松的BSD协议
邮件传输代理(MTA) Postfix 邮件传输代理
数据库/目录服务 MySQL 可选MySQL或其他版本
邮件投递代理(MDA) maildrop 支持过滤和强大功能
Web帐户管理后台 extman 支持无限域名、无限用户
POP3 服务器 Courier-IMAP 支持pop3/pop3s/imap/imaps,功能强大,可根据需要选择
WebMail 系统 ExtMail 支持多语言、全部模板化,功能基本齐全
防病毒软件(Anti-Virus) ClamAV 最热门的开源杀毒软件
内容过滤器 Amavisd-new Content-Filter软件,支持与clamav/sa的挂接
内容级别的反垃圾邮件工具 SpamAssassin 著名的SA,可以支持大量规则,但速度较慢
SMTP认证库 Cyrus SASL 标准的SASL实现库,可以支持Courier authlib
其他数据认证库 Courier Authlib 是maildrop, courier-imap等服务的关键部件
日志分析及显示 mailgraph_ext 在ExtMan中已经包含了
Web 服务器 Apache 最新版的apache服务器,默认支持ssl模块
maillist软件 Mailman 功能强大的邮件列表软件,支持基于web的管理
操作系统安装
操作系统迷你安装
http://bbs3.chinaunix.net/thread-1602387-1-1.html
安装时的注意事项
1,磁盘分区
由于是邮件系统,相关的日志和queue都会保存在var分区内,因此var分区要有足够的空间。以一块硬盘73G/内存3G的服务器为例,可做如下分区:
/ 512m
swap 4096m
/var 5g
/tmp 512m
/usr 8g(尽量保证有10G左右)
/home 50g(剩下所有的空间)
2,软件包的选择
我们的邮件系统是要对外服务的,所以尽可能少的选择软件包,安装时建议选择Minimal,然后进入Custom选择doc,info,man,src即可。
配置
1,编辑/etc/rc.conf确保有如下内容:- sshd_enable="YES"
- named_enable="YES"
- sendmail_enable="NONE"
复制代码 编辑/etc/resolv.conf确保第一条nameserver记录是127.0.0.1,这样本地DNS缓存才有效,类似如下:- domain extmail.org
- nameserver 127.0.0.1
- nameserver 61.153.177.199
复制代码 然后执行如下命令:
/etc/rc.d/named start
2,根据硬件的配置重新编译内核 (省略)
更新ports- pkg_add -r cvsup-without-gui
- rehash
- cvsup -gL2 /usr/share/examples/cvsup/ports-supfile -h cvsup.freebsdchina.org
- 或者
- cvsup -L 2 -h cvsup2.cn.FreeBSD.org /usr/share/examples/cvsup/ports-supfile
复制代码
或者 下载ports.tar直接使用
下载ports.tar (提取码 5b0ecc79)
上传然后将ports.tar移动到/usr下,解压
mv ports.tar /usr/
tar zxvf ports.tar
整个系统的安装全过程都要求以root身份执行。并能够访问Internet。
安装前的准备
下面的安装过程中弹出安装选择IPV6的一律取消,文档里面有提示选择的
按提示选择,没有的地方就按默认选择。
增加一个存储邮件的帐号和组(vmail)
执行如下命令
- pw group add vmail -g 1000
- pw user add vmail -u 1000 -g 1000 -s /sbin/nologin -d /dev/null
复制代码 给test用户创建路径
需要一个测试帐号test@extmail.org,需要准备该账号的路径。- mkdir -p /home/domains/extmail.org/test/Maildir/new
- mkdir -p /home/domains/extmail.org/test/Maildir/cur
- mkdir -p /home/domains/extmail.org/test/Maildir/tmp
- chown -R vmail:vmail /home/domains/
- chmod -R 700 /home/domains/
复制代码 ExtMan的安装
由于在安装过程中要使用ExtMan里面带的文件,因此在此先安装ExtMan。安装时根据个人需要选择MySQL或者mysql支持。- cd /usr/ports/mail/extman/ && make install clean
- 安装时选择mysql
- 小技巧
- cd /usr/ports/databases/mysql50-server/
- ee Makefile
- CONFIGURE_ARGS= --localstatedir=/var/db/mysql
- 改为
- CONFIGURE_ARGS= --localstatedir=/home/db/mysql
- 安装完MYSQL之后修改/usr/local/etc/rc.d/mysql-server大概34行
- ee /usr/local/etc/rc.d/mysql-server
- ${mysql_dbdir="/var/db/mysql"}
- 改为
- ${mysql_dbdir="/home/db/mysql"}
复制代码 安装mysql- cd /usr/ports/databases/mysql50-server/ && make WITH_CHARSET=gbk WITH_XCHARSET=all WITH_PROC_SCOPE_PTH=yes BUILD_OPTIMIZED=yes BUILD_STATIC=yes SKIP_DNS_CHECK=yes WITHOUT_INNODB=yes install clean
复制代码 编辑/etc/rc.conf
执行ee /etc/rc.conf
加入mysql_enable="YES"
复制 MySQL 配置文件- cp /usr/local/share/mysql/my-huge.cnf /usr/local/etc/my.cnf
- 启动 mysql-server
- /usr/local/bin/mysql_install_db --user=mysql
- /usr/local/etc/rc.d/mysql-server start
复制代码 修改root用户的密码
/usr/local/bin/mysqladmin -u root -p password
Enter password:
安装 openssl
cd /usr/ports/security/openssl/ && make install clean
安装配置文件
cp /usr/local/openssl/openssl.cnf.sample /usr/local/openssl/openssl.cnf
安装配置courier-imap POP3/IMAP
Courier-IMAP是一个提供POP3、IMAP服务的程序,能够很方便的配置使其支持加密协议POP3s、IMAPs。并良好的支持Maildir。
Courier-imap的安装
安装时选择(如果你使用MySQL认证,则选择AUTH_MYSQL):
OPENSSL
TRASHQUOTA
AUTH_MYSQL
执行cd /usr/ports/mail/courier-imap/ && make install clean
安装时选择 TRASHQUOTA AUTH_MYSQL
Authlib的配置
执行mv /usr/local/etc/authlib/authdaemonrc /usr/local/etc/authlib/authdaemonrc.bak
编辑/usr/local/etc/authlib/authdaemonrc文件,内容类似如下:- authmodulelist="authmysql"
- authmodulelistorig="authmysql"
- version="authdaemond.mysql"
- daemons=5
- authdaemonvar=/var/run/authdaemond
- subsystem=mail
- DEBUG_LOGIN=0
- DEFAULTOPTIONS="wbnodsn=1"
- LOGGEROPTS=""
复制代码 增加/var/run/authdaemond的执行权限,在FreeBSD系统下,其他用户默认没有执行权限
执行chmod +x /var/run/authdaemond
执行mv /usr/local/etc/authlib/authmysqlrc /usr/local/etc/authlib/authmysqlrc.bak
编辑/usr/local/etc/authlib/authmysqlrc文件,内容类似如下:- MYSQL_SERVER localhost
- MYSQL_USERNAME extmail
- MYSQL_PASSWORD extmail
- MYSQL_PORT 0
- MYSQL_OPT 0
- MYSQL_DATABASE extmail
- 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)'
复制代码 配置支持POP3s
拷贝一份配置文件
cp /usr/local/etc/courier-imap/pop3d.cnf.dist /usr/local/etc/courier-imap/pop3d.cnf
编辑/usr/local/etc/courier-imap/pop3d.cnf文件,类似如下:- RANDFILE = /usr/local/share/courier-imap/pop3d.rand
- [ req ]
- default_bits = 1024
- encrypt_key = yes
- distinguished_name = req_dn
- x509_extensions = cert_type
- prompt = no
- [ req_dn ]
- C=CN
- ST=BJ
- L=Bei Jing
- O=Extmail
- OU=extmail
- CN=extmail.org
- emailAddress=ppabc@qq.com
- [ cert_type ]
- nsCertType = server
复制代码 执行如下命令产生供POP3s使用的证书
/usr/local/sbin/mkpop3dcert
配置支持IMAPs
拷贝一份配置文件
cp /usr/local/etc/courier-imap/imapd.cnf.dist /usr/local/etc/courier-imap/imapd.cnf
编辑/usr/local/etc/courier-imap/imapd.cnf文件,类似如下:- RANDFILE = /usr/local/share/courier-imap/imapd.rand
- [ req ]
- default_bits = 1024
- encrypt_key = yes
- distinguished_name = req_dn
- x509_extensions = cert_type
- prompt = no
- [ req_dn ]
- C=CN
- ST=BJ
- L=Bei Jing
- O=Extmail
- OU=extmail
- CN=extmail.org
- emailAddress=ppabc@qq.com
- [ cert_type ]
- nsCertType = server
复制代码 执行如下命令产生供IMAP使用的证书
/usr/local/sbin/mkimapdcert
配置自动启动
编辑/etc/rc.conf文件,添加如下行:- courier_authdaemond_enable="YES"
- courier_imap_pop3d_enable="YES"
- courier_imap_imapd_enable="YES"
- courier_imap_pop3d_ssl_enable="YES"
- courier_imap_imapd_ssl_enable="YES"
复制代码 这5行的作用分别是在开机时:启动authdaemond,启动pop3d,启动imapd,启动pop3d-ssl,启动imapd-ssl。也可以使用命令行来控制这些进程的启动或者停止。
/usr/local/etc/rc.d/courier-authdaemond start/stop
/usr/local/etc/rc.d/courier-imap-pop3d start/stop
/usr/local/etc/rc.d/courier-imap-imapd start/stop
/usr/local/etc/rc.d/courier-imap-pop3d-ssl start/stop
/usr/local/etc/rc.d/courier-imap-imapd-ssl start/stop
Postfix的安装和配置-MTA
MTA在邮件系统中处于非常重要的位置,他负责接收其他人给你发的信,并且负责把你的信转发到目的地。选择一个靠谱的MTA对建立邮件来说意义重大,因此我们使用Postfix!! 。另外MTA部分在邮件系统中的开发难度是最高的,起到的作用也是最大的,因此我们也常拿MTA的名字来称呼自己的邮件系统,比如:我常说我的邮件系统是Postfix。
安装postfix
安装时选择(如果你使用MySQL验证,可以选择MYSQL):
PCRE
SASL2
TLS
MYSQL
VDA
TEST
cd /usr/ports/mail/postfix/ && make install clean
安装时选择PCRE SASL2 TLS MYSQL VDA TEST
一会有遇到要选择Y/N 先y 然后n 在这里当安装到SASL2不要选择选择 MYSQL 其他默认
否则会有Postfix:Sql_select option missing错误出现
Postfix:Sql_select option missing问题解决及原因请看http://ppabc.cn/wlwz/585.html
配置postfix
编辑/etc/rc.conf,增加如下一行
postfix_enable="YES"
编辑/etc/aliases,确保有如下一行
postfix: root
替换掉系统带的sendmail程序
mv /usr/sbin/sendmail /usr/sbin/sendmail.bak
cp /usr/local/sbin/sendmail /usr/sbin/sendmail
编辑/etc/periodic.conf,加入如下内容,禁掉sendmail的自动维护。- daily_clean_hoststat_enable="NO"
- daily_status_mail_rejects_enable="NO"
- daily_status_include_submit_mailq="NO"
- daily_submit_queuerun="NO"
复制代码 执行如下命令- /usr/local/sbin/postalias /etc/aliases
- chown postfix:postfix /etc/opiekeys
- /usr/local/sbin/postconf -e 'mydomain = extmail.org'
- /usr/local/sbin/postconf -e 'myhostname = mail.extmail.org'
- /usr/local/sbin/postconf -e 'myorigin = $mydomain'
- /usr/local/sbin/postconf -e 'virtual_mailbox_base = /home/domains'
- /usr/local/sbin/postconf -e 'virtual_uid_maps=static:1000'
- /usr/local/sbin/postconf -e 'virtual_gid_maps=static:1000'
复制代码 执行如下命令对查询表进行配置- cp /usr/local/www/extman/docs/mysql_virtual_* /usr/local/etc/postfix/
- /usr/local/sbin/postconf -e 'virtual_alias_maps = $alias_maps, mysql:/usr/local/etc/postfix/mysql_virtual_alias_maps.cf'
- /usr/local/sbin/postconf -e 'virtual_mailbox_maps = mysql:/usr/local/etc/postfix/mysql_virtual_mailbox_maps.cf'
- /usr/local/sbin/postconf -e 'virtual_mailbox_domains = mysql:/usr/local/etc/postfix/mysql_virtual_domains_maps.cf'
复制代码 SMTP认证设置
编辑/usr/local/lib/sasl2/smtpd.conf- pwcheck_method:authdaemond
- log_level:3
- mech_list:PLAIN LOGIN
- authdaemond_path:/var/run/authdaemond/socket
复制代码 对postfix做如下配置使支持smtp认证- /usr/local/sbin/postconf -e 'smtpd_sasl_auth_enable=yes'
- /usr/local/sbin/postconf -e 'broken_sasl_auth_clients = yes'
- /usr/local/sbin/postconf -e 'smtpd_sasl_local_domain = $myhostname'
复制代码 postfix反垃圾设置
此处的反垃圾邮件只是在MTA级的一些预防垃圾邮件的设置,可根据实际情况以及自己的需要进行调整。- /usr/local/sbin/postconf -e 'smtpd_helo_required=yes'
- /usr/local/sbin/postconf -e 'smtpd_delay_reject=yes'
- /usr/local/sbin/postconf -e 'disable_vrfy_command=yes'
- /usr/local/sbin/postconf -e 'smtpd_client_restrictions = check_client_access hash:/usr/local/etc/postfix/client_access'
- /usr/local/sbin/postconf -e 'smtpd_helo_restrictions=reject_invalid_hostname,check_helo_access hash:/usr/local/etc/postfix/helo_access'
- /usr/local/sbin/postconf -e 'smtpd_sender_restrictions = reject_non_fqdn_sender, reject_unknown_sender_domain, check_sender_access hash:/usr/local/etc/postfix/sender_access'
- /usr/local/sbin/postconf -e 'smtpd_recipient_restrictions=permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, reject_non_fqdn_recipient, reject_unknown_recipient_domain'
- /usr/local/sbin/postconf -e 'smtpd_data_restrictions=reject_unauth_pipelining'
- /usr/local/sbin/postconf -e 'header_checks = regexp:/usr/local/etc/postfix/head_checks'
- /usr/local/sbin/postconf -e 'body_checks = regexp:/usr/local/etc/postfix/body_checks'
- touch /usr/local/etc/postfix/head_checks
- touch /usr/local/etc/postfix/body_checks
- touch /usr/local/etc/postfix/client_access
- touch /usr/local/etc/postfix/sender_access
- touch /usr/local/etc/postfix/helo_access
- /usr/local/sbin/postmap /usr/local/etc/postfix/head_checks
- /usr/local/sbin/postmap /usr/local/etc/postfix/body_checks
- /usr/local/sbin/postmap /usr/local/etc/postfix/client_access
- /usr/local/sbin/postmap /usr/local/etc/postfix/sender_access
- /usr/local/sbin/postmap /usr/local/etc/postfix/helo_access
复制代码 TLS设置
生成证书,在这里默认私钥的访问密码为123qwe98,请根据自己的情况决定,以后可能会用得到。- mkdir -p /usr/local/etc/postfix/certs/CA
- cd /usr/local/etc/postfix/certs/CA
- mkdir certs crl newcerts private
- echo "01" > serial
- touch index.txt
- cp /usr/local/openssl/openssl.cnf .
复制代码
这个地方要注意上面这句后面有个点,也可以执行cp /usr/local/openssl/openssl.cnf /usr/local/etc/postfix/certs/CA/
编辑openssl.cnf 其中 dir = /usr/local/etc/postfix/certs/CA 这个地方一定要看,很多朋友证书不能生成就是因为这个地方
编辑openssl.cnf,确认dir参数的值是/usr/local/etc/postfix/certs/CA。然后继续执行如下命令,并根据情况输入信息。输入信息类似如下:
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:BJ
Locality Name (eg, city) []:Bei Jing
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Extmail
Organizational Unit Name (eg, section) []:extmail
Common Name (eg, YOUR name) []:extmail.org
Email Address []:ppabc@qq.com
这里的信息是 POP3s 证书 IMAP 证书 下面输入信息要一致
命令如下:
openssl req -new -x509 -keyout private/cakey.pem -out cacert.pem -days 3650 -config openssl.cnf
按照前面输入的信息输入
openssl req -nodes -new -x509 -keyout mykey.pem -out myreq.pem -days 3650 -config openssl.cnf
按照前面输入的信息输入- openssl x509 -x509toreq -in myreq.pem -signkey mykey.pem -out tmp.pem
- openssl ca -config openssl.cnf -policy policy_anything -out mycert.pem -infiles tmp.pem
- rm tmp.pem
- cp cacert.pem /usr/local/etc/postfix/certs/
- cp mycert.pem /usr/local/etc/postfix/certs/
- cp mykey.pem /usr/local/etc/postfix/certs/
- cd /usr/local/etc/postfix/certs/
- chown root:wheel cacert.pem mycert.pem
- chown root:postfix mykey.pem
- chmod 755 cacert.pem
- chmod 644 mycert.pem
- chmod 440 mykey.pem
- ln -s cacert.pem `openssl x509 -noout -hash < cacert.pem `.0
复制代码 配置postfix支持TLS- /usr/local/sbin/postconf -e 'smtpd_use_tls=yes'
- /usr/local/sbin/postconf -e 'smtpd_tls_auth_only=no'
- /usr/local/sbin/postconf -e 'smtp_tls_CAfile = /usr/local/etc/postfix/certs/cacert.pem'
- /usr/local/sbin/postconf -e 'smtp_tls_cert_file = /usr/local/etc/postfix/certs/mycert.pem'
- /usr/local/sbin/postconf -e 'smtp_tls_key_file = /usr/local/etc/postfix/certs/mykey.pem'
- /usr/local/sbin/postconf -e 'smtpd_tls_CAfile=/usr/local/etc/postfix/certs/cacert.pem'
- /usr/local/sbin/postconf -e 'smtpd_tls_cert_file=/usr/local/etc/postfix/certs/mycert.pem'
- /usr/local/sbin/postconf -e 'smtpd_tls_key_file=/usr/local/etc/postfix/certs/mykey.pem'
- /usr/local/sbin/postconf -e 'smtpd_tls_received_header=yes'
- /usr/local/sbin/postconf -e 'smtpd_tls_loglevel=3'
- /usr/local/sbin/postconf -e 'smtpd_starttls_timeout=60s'
复制代码 /usr/local/etc/postfix/master.cf
配置master.cf,添加如下信息- smtps inet n - n - - smtpd
- -o smtpd_tls_wrappermode=yes
- -o smtpd_sasl_auth_enable=yes
- -o smtpd_client_restrictions=permit_sasl_authenticated,reject
复制代码 Maildrop的安装和配置-MDA
MDA-邮件分发代理。他从MTA那儿拿到信,然后存入您的邮箱里面。MDA在投递邮件到您的目录里面时,会先对邮件进行一些过滤,过滤规则会根据您的配置文件来进行。1,进行全局过滤设置,读取/etc/maildroprc(Linux)或者/usr/local/etc/maildroprc(BSD),根据配置该配置文件执行相应的操作,影响到所有用户;2,根据每个用户的配置进行过滤,读取$HOME/.mailfilter,根据每个用户的设置进行相应的操作,仅影响单个用户。基于这样的特点,WEBMAIL通过编辑$HOME/.mailfilter可以实现一些特色化的东西,比如:黑白名单、SPAM自动转入垃圾邮件夹、SMS提醒等等。
安装maildrop
cd /usr/ports/mail/maildrop/ && make WITH_AUTHLIB=yes install clean
安装时选择mysql
修改master.cf /usr/local/etc/postfix/master.cf
修改master.cf的maildrop,类似修改为:- #maildrop unix - n n - - pipe
- # flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient}
- maildrop unix - n n - - pipe
- flags=DRhu user=vmail:vmail argv=/usr/local/bin/maildrop -w 90 -d ${recipient}
复制代码 /usr/local/etc/postfix/main.cf
修改main.cf- /usr/local/sbin/postconf -e 'virtual_transport=maildrop:'
- /usr/local/sbin/postconf -e 'maildrop_destination_concurrency_limit=1'
- /usr/local/sbin/postconf -e 'maildrop_destination_recipient_limit=1'
复制代码 编辑文件/usr/local/etc/maildroprc
确保是如下内容:- logfile "/home/domains/maildrop.log"
- #logfile "/var/log/maildrop.log"
- TEST="/bin/test -f"
- #
- # Check for custom user .mailfilter file
- #
- CUSTOM_FILTER="$HOME/.mailfilter"
- `$TEST $CUSTOM_FILTER && exit 1 || exit 0`
- if ( $RETURNCODE == 0 )
- {
- to "$HOME/Maildir"
- }
复制代码
[ 本帖最后由 ppabc 于 2009-12-19 16:16 编辑 ] |
评分
-
查看全部评分
|