- 論壇徽章:
- 0
|
FreeBSD7.1+postfix+sasl2+mysql+maildrop+ExtMan+Mailman+ClamAv完全安裝
網(wǎng)站:ppabc.cn
QQ: 5612035
郵箱:ppabc@qq.com
FreeBSD7.1和FreeBSD7.0安裝并沒有區(qū)別,我測試是可以安裝的,只是FreeBSD7.0發(fā)帖過于匆忙,不夠詳細(xì),F(xiàn)reeBSD7.1多加了需要注意的地方,和一些解決問題方法!
本文省略部分請(qǐng)看
FreeBSD7.0+postfix+sasl2+mysql+maildrop+ExtMan+Mailman+ClamAv完全安裝
http://bbs3.chinaunix.net/thread-1119098-1-1.html
內(nèi)網(wǎng)郵件VMware測試系統(tǒng)1.0發(fā)布 (基于FreeBSD7.0)
http://www.72891.cn/viewthread.php?tid=1158670
在本例中,機(jī)器名:www.ppabc.cn
域名:ppabc.cn
默認(rèn)網(wǎng)關(guān):192.168.1.1
IP地址:192.168.1.8
參考文章:
1. http://www.extmail.org/docs/extmail_solution_freebsd/
2. http://www.yiyou.org/docs/freebsd_postfix_03/
整個(gè)郵件解決方案由如下軟件組成:
功能模塊 內(nèi)容 備注
操作系統(tǒng)(OS) FreeBSD FreeBSD是一個(gè)優(yōu)秀的unix操作系統(tǒng),基于寬松的BSD協(xié)議
郵件傳輸代理(MTA) Postfix 使用postfix-2.5.6,1,ports中的postfix已經(jīng)是最新的2.5版
數(shù)據(jù)庫/目錄服務(wù) mysql-server-5.0.77 可選MySQL或其他版本
郵件投遞代理(MDA) maildrop-2.0.4 支持過濾和強(qiáng)大功能
Web帳戶管理后臺(tái) extman-0.2.5 支持無限域名、無限用戶
POP3 服務(wù)器 Courier-IMAP -4.4.1, 支持pop3/pop3s/imap/imaps,功能強(qiáng)大,可根據(jù)需要選擇
WebMail 系統(tǒng) ExtMail-1.0.5 支持多語言、全部模板化,功能基本齊全
防病毒軟件(Anti-Virus) ClamAV -0.94.2 最熱門的開源殺毒軟件
內(nèi)容過濾器 Amavisd-new-2.6.2_2 Content-Filter軟件,支持與clamav/sa的掛接
內(nèi)容級(jí)別的反垃圾郵件工具 SpamAssassin 著名的SA,可以支持大量規(guī)則,但速度較慢
SMTP認(rèn)證庫 Cyrus SASL -2.1.22_2 標(biāo)準(zhǔn)的SASL實(shí)現(xiàn)庫,可以支持Courier authlib
其他數(shù)據(jù)認(rèn)證庫 Courier Authlib -0.62.1 authlib是maildrop, courier-imap等服務(wù)的關(guān)鍵部件
日志分析及顯示 mailgraph_ext 在ExtMan中已經(jīng)包含了
Web 服務(wù)器 Apache -2.2.11 最新版的apache服務(wù)器,默認(rèn)支持ssl模塊
maillist軟件 Mailman-2.1.11 功能強(qiáng)大的郵件列表軟件,支持基于web的管理
操作系統(tǒng)安裝
操作系統(tǒng)迷你安裝
安裝時(shí)的注意事項(xiàng)
1,磁盤分區(qū)
由于是郵件系統(tǒng),相關(guān)的日志和queue都會(huì)保存在var分區(qū)內(nèi),因此var分區(qū)要有足夠的空間。以一塊硬盤73G/內(nèi)存3G的服務(wù)器為例,可做如下分區(qū):
/ 512m
swap 4096m
/var 5g
/tmp 512m
/usr 8g(盡量保證有10G左右)
/home 50g(剩下所有的空間)
2,軟件包的選擇
我們的郵件系統(tǒng)是要對(duì)外服務(wù)的,所以盡可能少的選擇軟件包,安裝時(shí)建議選擇Minimal,然后進(jìn)入Custom選擇doc,info,man,src即可。
配置
1,編輯/etc/rc.conf確保有如下內(nèi)容:
- sshd_enable="YES"
- named_enable="YES"
- sendmail_enable="NONE"
復(fù)制代碼
編輯/etc/resolv.conf確保第一條nameserver記錄是127.0.0.1,這樣本地DNS緩存才有效,類似如下:
- domain ppabc.cn
- nameserver 127.0.0.1
- nameserver 61.153.177.199
復(fù)制代碼
然后執(zhí)行如下命令:
/etc/rc.d/named start
2,根據(jù)硬件的配置重新編譯內(nèi)核 (省略)
更新ports (省略)
整個(gè)系統(tǒng)的安裝全過程都要求以root身份執(zhí)行。并能夠訪問Internet。
安裝前的準(zhǔn)備
增加一個(gè)存儲(chǔ)郵件的帳號(hào)和組(vmail)
執(zhí)行如下命令
- pw group add vmail -g 1000
- pw user add vmail -u 1000 -g 1000 -s /sbin/nologin -d /dev/null
復(fù)制代碼
給test用戶創(chuàng)建路徑
需要一個(gè)測試帳號(hào)test@ppabc.cn,需要準(zhǔn)備該賬號(hào)的路徑。
- mkdir -p /home/domains/ppabc.cn/test/Maildir/new
- mkdir -p /home/domains/ppabc.cn/test/Maildir/cur
- mkdir -p /home/domains/ppabc.cn/test/Maildir/tmp
- chown -R vmail:vmail /home/domains/
- chmod -R 700 /home/domains/
復(fù)制代碼
ExtMan的安裝
由于在安裝過程中要使用ExtMan里面帶的文件,因此在此先安裝ExtMan。安裝時(shí)根據(jù)個(gè)人需要選擇MySQL或者mysql支持。
cd /usr/ports/mail/extman/ && make install clean
安裝時(shí)選擇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
復(fù)制代碼
編輯/etc/rc.conf
執(zhí)行ee /etc/rc.conf
加入mysql_enable="YES"
復(fù)制 MySQL 配置文件
- cp /usr/local/share/mysql/my-huge.cnf /usr/local/etc/my.cnf
復(fù)制代碼
啟動(dòng) mysql-server
- /usr/local/bin/mysql_install_db --user=mysql
- cp /usr/local/etc/rc.d/mysql-server /usr/local/etc/rc.d/mysql.sh
- /usr/local/etc/rc.d/mysql-server start
復(fù)制代碼
修改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是一個(gè)提供POP3、IMAP服務(wù)的程序,能夠很方便的配置使其支持加密協(xié)議POP3s、IMAPs。并良好的支持Maildir。
Courier-imap的安裝
安裝時(shí)選擇(如果你使用MySQL認(rèn)證,則選擇AUTH_MYSQL):
OPENSSL
TRASHQUOTA
AUTH_MYSQL
執(zhí)行cd /usr/ports/mail/courier-imap/ && make install clean
安裝時(shí)選擇 TRASHQUOTA AUTH_MYSQL
Authlib的配置
執(zhí)行mv /usr/local/etc/authlib/authdaemonrc /usr/local/etc/authlib/authdaemonrc.bak
編輯/usr/local/etc/authlib/authdaemonrc文件,內(nèi)容類似如下:
-
- authmodulelist="authmysql"
- authmodulelistorig="authmysql"
- version="authdaemond.mysql"
- daemons=5
- authdaemonvar=/var/run/authdaemond
- subsystem=mail
- DEBUG_LOGIN=0
- DEFAULTOPTIONS="wbnodsn=1"
- LOGGEROPTS=""
復(fù)制代碼
增加/var/run/authdaemond的執(zhí)行權(quán)限,在FreeBSD系統(tǒng)下,其他用戶默認(rèn)沒有執(zhí)行權(quán)限
執(zhí)行chmod +x /var/run/authdaemond
執(zhí)行mv /usr/local/etc/authlib/authmysqlrc /usr/local/etc/authlib/authmysqlrc.bak
編輯/usr/local/etc/authlib/authmysqlrc文件,內(nèi)容類似如下:
- 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)'
復(fù)制代碼
配置支持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=ppabc.cn
- emailAddress=ppabc@qq.com
- [ cert_type ]
- nsCertType = server
復(fù)制代碼
執(zhí)行如下命令產(chǎn)生供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=ppabc.cn
- emailAddress=ppabc@qq.com
- [ cert_type ]
- nsCertType = server
復(fù)制代碼
執(zhí)行如下命令產(chǎn)生供IMAP使用的證書
/usr/local/sbin/mkimapdcert
配置自動(dòng)啟動(dòng)
編輯/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"
復(fù)制代碼
這5行的作用分別是在開機(jī)時(shí):啟動(dòng)authdaemond,啟動(dòng)pop3d,啟動(dòng)imapd,啟動(dòng)pop3d-ssl,啟動(dòng)imapd-ssl。也可以使用命令行來控制這些進(jìn)程的啟動(dòng)或者停止。
/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在郵件系統(tǒng)中處于非常重要的位置,他負(fù)責(zé)接收其他人給你發(fā)的信,并且負(fù)責(zé)把你的信轉(zhuǎn)發(fā)到目的地。選擇一個(gè)靠譜的MTA對(duì)建立郵件來說意義重大,因此我們使用Postfix!! 。另外MTA部分在郵件系統(tǒng)中的開發(fā)難度是最高的,起到的作用也是最大的,因此我們也常拿MTA的名字來稱呼自己的郵件系統(tǒng),比如:我常說我的郵件系統(tǒng)是Postfix。
安裝postfix
安裝時(shí)選擇(如果你使用MySQL驗(yàn)證,可以選擇MYSQL):
PCRE
SASL2
TLS
MYSQL
VDA
TEST
cd /usr/ports/mail/postfix/ && make install clean
安裝時(shí)選擇PCRE SASL2 TLS MYSQL VDA TEST
一會(huì)有遇到要選擇Y/N 先y 然后n 在這里當(dāng)安裝到SASL2不要選擇選擇 MYSQL 其他默認(rèn)
否則會(huì)有Postfix:Sql_select option missing錯(cuò)誤出現(xiàn)
Postfix:Sql_select option missing問題解決及原因請(qǐng)看http://ppabc.cn/?p=585
配置postfix
編輯/etc/rc.conf,增加如下一行
postfix_enable="YES"
編輯/etc/aliases,確保有如下一行
postfix: root
替換掉系統(tǒng)帶的sendmail程序
mv /usr/sbin/sendmail /usr/sbin/sendmail.bak
cp /usr/local/sbin/sendmail /usr/sbin/sendmail
編輯/etc/periodic.conf,加入如下內(nèi)容,禁掉sendmail的自動(dòng)維護(hù)。
- daily_clean_hoststat_enable="NO"
- daily_status_mail_rejects_enable="NO"
- daily_status_include_submit_mailq="NO"
- daily_submit_queuerun="NO"
復(fù)制代碼
執(zhí)行如下命令
- /usr/local/sbin/postalias /etc/aliases
- chown postfix:postfix /etc/opiekeys
- /usr/local/sbin/postconf -e 'mydomain = ppabc.cn'
- /usr/local/sbin/postconf -e 'myhostname = mail.ppabc.cn'
- /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'
復(fù)制代碼
執(zhí)行如下命令對(duì)查詢表進(jìn)行配置
- 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'
復(fù)制代碼
SMTP認(rèn)證設(shè)置
編輯/usr/local/lib/sasl2/smtpd.conf
-
- pwcheck_method:authdaemond
- log_level:3
- mech_list:PLAIN LOGIN
- authdaemond_path:/var/run/authdaemond/socket
復(fù)制代碼
對(duì)postfix做如下配置使支持smtp認(rèn)證
- /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'
復(fù)制代碼
postfix反垃圾設(shè)置
此處的反垃圾郵件只是在MTA級(jí)的一些預(yù)防垃圾郵件的設(shè)置,可根據(jù)實(shí)際情況以及自己的需要進(jìn)行調(diào)整。
- /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
復(fù)制代碼
TLS設(shè)置
生成證書,在這里默認(rèn)私鑰的訪問密碼為123qwe98,請(qǐng)根據(jù)自己的情況決定,以后可能會(huì)用得到。
-
- 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 .
復(fù)制代碼
這個(gè)地方要注意上面這句后面有個(gè)點(diǎn),也可以執(zhí)行cp /usr/local/openssl/openssl.cnf /usr/local/etc/postfix/certs/CA/
編輯openssl.cnf 其中 dir = /usr/local/etc/postfix/certs/CA 這個(gè)地方一定要看,很多朋友證書不能生成就是因?yàn)檫@個(gè)地方
編輯openssl.cnf,確認(rèn)dir參數(shù)的值是/usr/local/etc/postfix/certs/CA。然后繼續(xù)執(zhí)行如下命令,并根據(jù)情況輸入信息。輸入信息類似如下:
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) []:ppabc.cn
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
復(fù)制代碼
配置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
復(fù)制代碼
配置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
復(fù)制代碼
Maildrop的安裝和配置-MDA
MDA-郵件分發(fā)代理。他從MTA那兒拿到信,然后存入您的郵箱里面。MDA在投遞郵件到您的目錄里面時(shí),會(huì)先對(duì)郵件進(jìn)行一些過濾,過濾規(guī)則會(huì)根據(jù)您的配置文件來進(jìn)行。1,進(jìn)行全局過濾設(shè)置,讀取/etc/maildroprc(Linux)或者/usr/local/etc/maildroprc(BSD),根據(jù)配置該配置文件執(zhí)行相應(yīng)的操作,影響到所有用戶;2,根據(jù)每個(gè)用戶的配置進(jìn)行過濾,讀取$HOME/.mailfilter,根據(jù)每個(gè)用戶的設(shè)置進(jìn)行相應(yīng)的操作,僅影響單個(gè)用戶;谶@樣的特點(diǎn),WEBMAIL通過編輯$HOME/.mailfilter可以實(shí)現(xiàn)一些特色化的東西,比如:黑白名單、SPAM自動(dòng)轉(zhuǎn)入垃圾郵件夾、SMS提醒等等。 |
|