有鑒於網路上架設FreeBSD的資料非常少,所以小弟自己收集了一些前輩的資料,並且整合起來實際測試無誤後再發表出來供大家參考,若有錯誤,也請各位不吝指正,感謝各位參考
更新時間:2012.03.29
- 基本環境
此處使用網域名稱:chemical.com.tw
Mail MX為:mail.chemical.com.tw →指向 60.251.187.199
Web Server:mail.chemical.com.tw →指向 60.251.187.198
Web Mail:mail.chemical.com.tw →指向 60.251.187.199
可利用pkg_info |grep xxxxx 查詢
- 已安裝libtool
- 已支援PHP的Apache Server
PHP- extensions 確認以下模組是否已安裝,若尚未安裝,則利用指令重新安裝:
% /usr/ports/lang/php5-extensions
% make config reinstall clean
[X] CTYPE ctype functions
[X] DOM DOM support
[X] FILTER input filter support
[X] FTP FTP support
[X] GD GD library support
[X] GETTEXT gettext library support
[X] HASH HASH Message Digest Framework
[X] ICONV iconv support
[X] IMAP IMAP support
[X] JSON JavaScript Object Serialization support
[X]] LDAP OpenLDAP support
[X] MBSTRING multibyte string support
[X]] MCRYPT Encryption support
[X] MSSQL MS-SQL database support
[X] MYSQL MySQL database support
[X] MYSQLI MySQLi database support
[X]] OPENSSL OpenSSL support
[X] PDO PHP Data Objects Interface (PDO)
[X] PDO_SQLITE PDO sqlite driver
[X] POSIX POSIX-like functions
[X] SESSION session support
[X] SIMPLEXML simplexml support
[X] SNMP SNMP support
[X] SOCKETS sockets support
[X] SQLITE sqlite support
[X] SQLITE3 sqlite3 support
[X] SYSVSHM System V shared memory support
[X] TIDY TIDY support
[X] TOKENIZER tokenizer support
[X] XML XML support
[X] XMLREADER XMLReader support
[X] XMLWRITER XMLWriter support
[X] ZIP ZIP support
[X] ZLIB ZLIB support
- MySQL Server
- 設定DNS Server正反解,對應需要架設的Mail Server
- # cd /etc/namedb/working/chemical.com.tw.hosts
@ IN MX 10 mail.chemical.com.tw. # 設定Mail Transfer Agent
www IN A 60.251.187.198 # 設定Web Server
mail IN A 60.251.187.199 # 設定Web Mail對應位置
198 IN PTR www.chemical.com.tw. # Web Server反解對應
199 IN PTR mail.chemical.com.tw. # Web Mail反解對應
要注意網域都必需FQDN方式輸入,MX紀錄可用0或10,此處指有一台MTA,故優先權設多少都可以
- 設定完成之後利用已下指令查詢
查詢MTA是否解析的到
# dig chemical.com.tw MX 出現已下訊息表示成功的解析到 ;; ANSWER SECTION: chemical.com.tw. 259200 IN MX 10 mail.chemical.com.tw. |
查詢Web Mail是否解析的到
# dig mail.chemical.com.tw 出現已下訊息表示成功的解析到 ;; ANSWER SECTION: mail.chemical.com.tw. 259200 IN A 60.251.187.199 |
- 校正Server時間
先讓主機做第一次時間校正:
# ntpdate time.stdtime.gov.tw
再來需要將ntp服務隨開機啟動,需修改rc.conf
# vi /etc/rc.conf
加入 ntpd_enable=”YES”
啟動 ntpd服務
# /etc/rc.d/ntpd start
- 關閉Sendmail Server
先查看 sendmail 有無啟動
# sockstat |grep 25 root sendmail 1373 4 tcp4 127.0.0.1:25 *:* |
若有,則關閉之,並在開機始也不啟動 sendmail
[root@rhel200 root]# service sendmail stop Shutting down sendmail: [ OK ] Shutting down sm-client: [ OK ] # vi /etc/rc.conf 將 If you not need sendmail anymore, please add in your rc.conf (如果你不再需要sendmail,參考以下設定來修改你的rc.conf ) sendmail_enable="NO" sendmail_submit_enable="NO" sendmail_outbound_enable="NO" sendmail_msp_queue_enable="NO"
And you can disable some sendmail specific daily maintenance routines inyour etc/periodic.conf file (你還可以在vi /etc/periodic.conf裡關掉某些sendmail才會用到的設定 ) 沒有periodic.conf ? 那就從 /etc/defaults/ 下複製一個到 /etc下,然後再修改
# 150.clean-hoststat daily_clean_hoststat_enable="NO" # 440.status-mailq daily_status_include_submit_mailq="NO" # 460.status-mail-rejects daily_status_mail_rejects_enable="NO" # 500.queuerun daily_submit_queuerun="NO" |
關於 Sendmail 於 rc.conf 內設定 None、No、Yes 意義?
None:將 Sendmail 完全關閉
NO:Sendmail 只監聽 Localhost (127.0.0.1:25)
YES:啟用 Sendmail
- 安裝Postfix
# cd /usr/ports/mail/postfix; make install clean
- 勾選以下項目:
[X] PCRE Perl Compatible Regular Expressions
[X] SASL2 Cyrus SASLv2 (Simple Auth. and Sec. Layer)
[X] DOVECOT2 Dovecot 2.x SASL authentication method
[X] TLS Enable SSL and TLS support
[X] MYSQL MySQL maps (choose version with WITH_MYSQL_VER)
[X] OPENLDAP OpenLDAP maps (choose ver. with WITH_OPENLDAP_VER)
[X] LDAP_SASL Enable OpenLDAP client-to-server auth via SASL
[X] INST_BASE Install into /usr and /etc/postfix
安裝cyrus-sasl 2.1.25_1時需加選
[X] MYSQL Use MySQL
安裝完成後須回答下列問題:
Would you like to activate Postfix in /etc/mail/mailer.conf [n]? y
(是否要把postfix加到mailer.conf裡,答y)
- 若有選擇安裝[X] DOVECOT2 Dovecot 2.x SASL authentication method,預設會將devecot 2.0.15也安裝完成
- 設定開機啟動postfix、devecot
% vi /etc/rc.conf
加入
postfix_enable="YES"
- 安裝 Cyrus-Sasl2-Saslauthd 套件 2.1.25
# cd /usr/ports/security/cyrus-sasl2-saslauthd //切換至套件路徑
# make install clean //安裝 SASL2 套件
[X] HTTPFORM Enable HTTP form authentication
使用 SASL 功能記得在 /etc/rc.conf 內加上 saslauthd_enable="YES" (加在postfix_enable之前)
- 設定 Postfix 能讀取 SASL 設定檔
查看 SASL 設定檔知道其擁有人 (owner) 及群組 (groups) 為 cyrus 因此我們將 postfix 加入此群組 (cyrus) 內,以便屆時 postifx 服務能順利讀取 SASL 設定檔。
# ls -l /usr/local/etc/sasldb* //查看 sasldb 權限
-rw-r----- 1 cyrus mail 16384 7 27 11:36 /usr/local/etc/sasldb2.db |
修改群組 (group) 檔案將 postfix 加入 cyrus 群組
# vi /etc/group //修改群組檔案
cyrus:*:60:postfix //將 postfix 加入 cyurs 群組內
|
- 建立 smtpd寄信驗證檔
# vi /usr/local/lib/sasl2/smtpd.conf //修改 SMTP 設定檔
log_level: 3 #設定log檔紀錄等級
pwcheck_method: saslauthd #修改認證方法為SASL
mech_list: plain login cram-md5 digest-md5 #設定登入方式有哪幾種
- Postfix基本設定
這樣就算安裝完成...接下來是這定主要的設定都在/usr/local/etc/postfix/main.cf下,其他的設定檔也都在這個目錄中
修改main.cf設定檔:
# vi /etc/postfix/main.cf
修正以下參數
#主機名稱 myhostname = mail.chemical.com.tw |
#網域名稱(若使用虛擬網域時,可不需設定) mydomain = chemical.com.tw |
#設定郵件寄出時顯示@後面的值(若使用虛擬網域時,可不需設定) myorigin = $mydomain |
# 設置postfix服務監聽的網路介面,預設為全部,不開全部則webmail會無法使用
inet_interfaces = all |
mydestination = $myhostname, localhost.$mydomain, localhost(若使用虛擬網域時,可不需設定) #此參數代表只要寄信給以下三者之一,postfix都會收下此信 abc@chemical.com.tw abc@localhost.chemical.com.tw abc@localhost |
#設定SMTP要開放的網路型態 mynetworks_style = subnet |
#設定SMTP要開放的工作網段 (本機IP或本地端網段) mynetworks = 127.0.0.1, 192.168.1.15, 60.251.187.199 |
#可轉寄郵件的信任網段 (工作網段設定為IP時,可不需設定) relay_domains = mynetworks |
# 使用者信箱儲存型態(若使用虛擬網域時,可不需設定) home_mailbox = Maildir/ |
#使用者的別名檔(若使用虛擬網域時,可不需設定) alias_maps = hash:/etc/mail/aliases |
10.配置Postfix供虛擬網域使用
修改以下設定
# vi /etc/postfix/main.cf
#-----------Base Setting Start----------# biff = no
# 設定Postfix核對SPF記錄 smtpd_milters = unix:private/sid-filter
# 設定Postfix核對DKIM記錄 smtpd_milters = inet:localhost:10026
# 所有進出郵件一律Bcc至以下帳號 always_bcc = backup@chemical.com.tw
# 避免always_bcc及aliases收到重複的信件 enable_original_recipient = no
# 設定寄給收件者的郵件自動產生郵件複本寄到指定帳號 recipient_bcc_maps = hash:/etc/postfix/recipient_bcc
# 設定寄件者的郵件自動產生郵件複本寄到指定帳號 sender_bcc_maps = hash:/etc/postfix/sender_bcc
# 郵件改寫 #canonical_maps = hash:/etc/postfix/canonical
# 郵件位址改寫 #masquerade_domains = mail.chemical.com.tw chemical.com.tw
# 限制每個信箱的總容量大小 # 5GB #mailbox_size_limit = 5368709120
# 控制每個 Client 的同時連線數 smtpd_client_connection_count_limit = 50
# 設定Mynetworks 及 dongsong.com.tw 網域連線數不受限制 smtpd_client_connection_count_limit_exceptions = $mynetworks, .dongsong.com.tw
# 關掉的 vrfy 指令。 disable_vrfy_command = yes
# virtual 的部分,我們用 pcre 來處理: #virtual_maps = pcre:/usr/local/etc/postfix/virtual
# transport 的部分,我們用 hash 來處理: #transport_maps = hash:/usr/local/etc/postfix/transport
# resource:當無法寄出的郵件是由於本身 postfix 的資源(resource)所造成的, # 例如 queue 檔案無法寫入的錯誤訊息等,則通知 postmaster 該問題! # software:由於相關軟體的問題造成無法寄出信件時的通知! notify_classes = resource, software
# header_checks = regexp:/etc/postfix/header_checks #body_checks = regexp:/usr/local/etc/postfix/body_checks
# 駐列管理 - 無法傳送的信件在 defer 佇列裡最多保存 1 天,超過時間則退給寄信人 maximal_queue_lifetime = 1d bounce_queue_lifetime = 12h smtpd_delay_reject = yes
# qmgr 模組每 5 分鐘檢查一次 defer 佇列,查看是否有郵件須排入 active 佇列 queue_run_delay = 5m
#-----------Base Setting End------------# # 開啟 smtp 認證 smtpd_sasl_auth_enable = yes smtpd_sasl_authenticated_header = yes smtpd_sasl_type = dovecot smtpd_sasl_path = /var/spool/postfix/private/auth
# 不允許任何非匿名的使用者 smtpd_sasl_security_options = noanonymous
# sasl的本地網域 smtpd_sasl_local_domain = $mydomain
# 保持client端的相容性,例如MSOE4 broken_sasl_auth_clients = yes
# smtpd_tls_auth_only 是指僅當 postfix 提供 TLS的情形時,才允許 SMTP AUTH。 # 以 outlook express 為例,當 smtpd_tls_auth_only 開啟時,若在外寄郵件-SMTP中沒有勾選 SSL 的話, # 則會郵遞失敗,此功能強迫使用者必須在使用支援 TLS 的情形下,才給予認證通行。 smtpd_tls_auth_only = yes smtpd_enforce_tls = yes
# Enable TLS Connection smtpd_tls_security_level = may smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.pem smtpd_tls_key_file = /etc/postfix/ssl/smtpd.pem smtpd_tls_CAfile = /etc/postfix/ssl/smtpd.pem smtpd_tls_loglevel = 3 smtpd_tls_session_cache_timeout = 3600s smtpd_tls_received_header = yes tls_random_source = dev:/dev/urandom
######################################### # SQL Server 設定 # ######################################### # 別名資料庫查表設定 virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-aliases.cf
# 判斷收件者是否存在 local_recipient_maps = proxy:mysql:/etc/postfix/mysql-localrecip.cf
######################################### # 虛擬信箱系統 # ######################################### # 虛擬信箱的目錄位置 virtual_mailbox_base = /home/vmail
# 使用 postfix 的 UID & GID 做為虛擬信箱的管理者 virtual_uid_maps = static:125 virtual_gid_maps = static:125
# 虛擬信箱網域對照表查詢設定檔 virtual_mailbox_domains = proxy:mysql:/etc/postfix/vdomains.cf
# 虛擬信箱使用者目錄查詢設定檔 virtual_mailbox_maps = proxy:mysql:/etc/postfix/vmailboxs.cf
# 設定磁碟配合給虛擬信箱使用者 # 顯示信相容量單位為Bytes #virtual_mailbox_limit = size_in_bytes
# 限制單封郵件的收件人數量 smtpd_recipient_limit = 50
# 限制每一封單一郵件的大小 # 30MB message_size_limit = 41943040
# 虛擬信箱容量為限制 # 5GB #virtual_mailbox_limit = 5368709120 #virtual_mailbox_limit = postfix:mysql:/etc/postfix/vquota.cf #virtual_mailbox_limit_override = yes
# Limits only INBOX part for IMAP #virtual_mailbox_limit_inbox = yes #virtual_create_maildirsize = yes #virtual_mailbox_extended = yes #virtual_maildir_limit_message = Sorry, the user's mailbox has no space available in their inbox. #virtual_overquota_bounce = yes
# 虛擬信箱傳送郵件方式 #virtual_transport = virtual
######################### # 垃圾郵件過濾機制 # ######################### # smtp Client 開啟送信前交握協定 smtpd_helo_required = yes
# 使用amavisd-new來過濾郵件 content_filter = smtp-amavis:[127.0.0.1]:10024
# 拒絕寄件者不存在的郵件 smtpd_reject_unlisted_sender = yes
# 拒絕收件者不存在的郵件 smtpd_reject_unlisted_recipient = yes
# 不允許對方的連線 IP 沒有反解 # 如果Mail Server架在UTM或IP分享器下時,此行需註解掉 # 外部NAT進來的IP會變成是192.168.1.1(Default Gateway),造成反解不到的連線而拒絕外部寄進來的信 #smtpd_sender_restrictions = reject_unknown_client
# 以下傳輸限制條件需依照順序排列: # 順序 1 # 用戶端過濾,拒絕動態 IP 所發出來的信件,只限管理者信任的網段IP才能連結postfix smtpd_client_restrictions = permit_sasl_authenticated permit_mynetworks reject_unauth_destination reject_rbl_client dnsbl.ahbl.org reject_rbl_client dnsbl.njabl.org reject_rbl_client dnsbl.sorbs.net reject_rbl_client aspews.ext.sorbs.net reject_rbl_client cbl.abuseat.org reject_rbl_client mail2.518.com.tw reject_rbl_client bl.spamcop.net reject_rbl_client cblless.anti-spam.org.cn=127.0.8.5 check_client_access hash:/etc/postfix/client_check
# 順序 2 # 檢查寄信時的交握協定 smtpd_helo_restrictions = permit_sasl_authenticated permit_mynetworks # reject_unknown_helo_hostname reject_non_fqdn_hostname
# 順序 3 # 寄件者郵件過慮條件 smtpd_sender_restrictions = permit_sasl_authenticated permit_mynetworks reject_non_fqdn_sender # 如果Mail Server架在UTM或IP分享器下時,此行需註解掉 # 外部NAT進來的IP會變成是192.168.1.1(Default Gateway),造成反解不到的連線而拒絕外部寄進來的信 # reject_unknown_sender_domain # reject_unknown_client
# 順序 4 # 收信人郵件過濾條件(白名單) smtpd_recipient_restrictions = permit_sasl_authenticated permit_mynetworks reject_unauth_destination reject_non_fqdn_recipient reject_invalid_hostname reject_non_fqdn_hostname reject_non_fqdn_sender reject_non_fqdn_recipient reject_unknown_sender_domain reject_unknown_recipient_domain reject_unauth_destination check_client_access hash:/etc/postfix/client_check
# 順序 5 # 若Client不按SMTP各階段正常傳送命令,則拒絕轉遞 smtpd_data_restrictions = reject_unauth_pipelining
# 順序 6 # 檢查磁碟用量,不足則拒收郵件 #smtpd_end_of_data_restrictions = check_policy_service unix:private/policy |
11.新增Postfix的各個對照表
- 新增用戶端檢查對照表 # vi /etc/postfix/client_check
#client_check #拒絕動態IP轉信 /\.dynamic\./ REJECT We can’t allow dynamic IP to relay! /.*\.indimodels.com/ REJECT We can’t allow indimodels IP to relay! |
將client_check轉為db檔供postfix對照
# postmap –p client_check
- 新增收件時產生BCC檢查對照表 # vi /etc/postfix/recipient_bcc
# 設定收件者的郵件自動產生郵件複本寄到指定帳號 # 收件者信箱 Bcc信箱 service@dongsong.com.tw sales.ds@dongsong.com.tw service@chemical.com.tw tr.group@chemical.com.tw
# 國貿人員第一組,Bcc至組長tr.best@chemical.com.tw tr.best01@chemical.com.tw tr.best@chemical.com.tw tr.best06@chemical.com.tw tr.best@chemical.com.tw tr.best10@chemical.com.tw tr.best@chemical.com.tw tr.best08@chemical.com.tw tr.best@chemical.com.tw
# 國貿人員第二組,Bcc至組長tr.best05@chemical.com.tw hr.best@chemical.com.tw tr.best05@chemical.com.tw tr.best03@chemical.com.tw tr.best05@chemical.com.tw tr.best04@chemical.com.tw tr.best05@chemical.com.tw tr.best09@chemical.com.tw tr.best05@chemical.com.tw assist.best01@chemical.com.tw tr.best05@chemical.com.tw
# dongsong 郵件備份 assist.ds02@dongsong.com.tw backup@dongsong.com.tw money@dongsong.com.tw backup@dongsong.com.tw sales.ds01@dongsong.com.tw backup@dongsong.com.tw sales.ds02@dongsong.com.tw backup@dongsong.com.tw sales.ds03@dongsong.com.tw backup@dongsong.com.tw sales.ds04@dongsong.com.tw backup@dongsong.com.tw sales.ds05@dongsong.com.tw backup@dongsong.com.tw sales.ds06@dongsong.com.tw backup@dongsong.com.tw xiaomay@dongsong.com.tw backup@dongsong.com.tw |
將recipient_bcc轉為db檔供postfix對照
# postmap –p recipient_bcc
- 新增寄件時產生BCC檢查對照表 # vi /etc/postfix/sender_bcc
# 設定寄件者的郵件自動產生郵件複本寄到指定帳號 # 寄件者信箱 Bcc信箱
# 國貿人員第一組,Bcc至組長tr.group1@chemical.com.tw tr.best01@chemical.com.tw tr.best@chemical.com.tw tr.best08@chemical.com.tw tr.best@chemical.com.tw tr.best10@chemical.com.tw tr.best@chemical.com.tw tr.best11@chemical.com.tw tr.best@chemical.com.tw
# 國貿人員第二組,Bcc至組長tr.group2@chemical.com.tw hr.best@chemical.com.tw tr.best05@chemical.com.tw tr.best03@chemical.com.tw tr.best05@chemical.com.tw tr.best04@chemical.com.tw tr.best05@chemical.com.tw tr.best06@chemical.com.tw tr.best05@chemical.com.tw tr.best09@chemical.com.tw tr.best05@chemical.com.tw |
將recipient_bcc轉為db檔供postfix對照
# postmap –p sender_bcc
- 新增虛擬網域檢查對照表 # vi /etc/postfix/vdomains.cf
# MySQL資料庫主機名稱: host = localhost
# MySQL資料庫帳號: user = postfix
# MySQL資料庫密碼: password = 123456
# MySQL資料庫名稱: dbname= postfix
# 查詢語法 query = SELECT domain FROM domain WHERE domain = '%s' |
- 新增使用者信箱位置對照表 # vi /etc/postfix/vmailboxs.cf
# MySQL資料庫主機名稱: host = localhost
# MySQL資料庫帳號: user = postfix
# MySQL資料庫密碼: password = 123456
# MySQL資料庫名稱: dbname= postfix
# 查詢語法 query = SELECT maildir FROM mailbox WHERE username = '%s' |
- 新增郵件別名檔查詢對照表 # vi /etc/postfix/mysql-aliases.cf
# MySQL資料庫主機名稱: host = localhost
# MySQL資料庫帳號: user = postfix
# MySQL資料庫密碼: password = 123456
# MySQL資料庫名稱: dbname= postfix
# 查詢語法 table = alias select_field = goto where_field = address |
12.建立MySQL資料庫及資料表供postfix使用
# mysql –u root –p #使用root登入mysql
mysql> create database postfix; #建立postfix使用的資料庫
mysql> grant all privileges on postfix.* to 'postfix'@'localhost' identified by 'postfix' with grant option; #建立使用者postfix,擁有postfix資料庫所有權限
13.設定SMTP SSL驗證檔
# mkdir /etc/postfix/ssl //生成的憑證會放在此處
# cd /etc/postfix/ssl
# openssl req -new -x509 -nodes -out smtpd.pem -keyout smtpd.pem -days 3650
生成smtp憑證檔 Generating a 1024 bit RSA private key ...++++++ ...................................++++++ writing new private key to 'smtpd.pem' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:TW State or Province Name (full name) [Some-State]:Taiwan Locality Name (eg, city) []:Taoyuan City Organization Name (eg, company) [Internet Widgits Pty Ltd]:Bestchem International CO. LTD. Organizational Unit Name (eg, section) []:Second Mail Server Common Name (eg, YOUR name) []:Chemical.com.tw Email Address []:mis.best01@chemical.com.tw |
14.確認 saslauthd 有無啟動
重新啟動sasl
# /usr/local/etc/rc.d/saslauthd restart
# ps -axwu | grep saslauthd #有以下顯示表示正在啟動中
root 936 0.0 0.0 19352 2772 ?? Is 2:00PM 0:00.01 /usr/local/sbin/saslauthd -a pam
root 937 0.0 0.0 19352 2772 ?? I 2:00PM 0:00.00 /usr/local/sbin/saslauthd -a pam
root 938 0.0 0.0 19352 2772 ?? I 2:00PM 0:00.00 /usr/local/sbin/saslauthd -a pam
root 939 0.0 0.0 19352 2772 ?? I 2:00PM 0:00.00 /usr/local/sbin/saslauthd -a pam
root 940 0.0 0.0 19352 2772 ?? I 2:00PM 0:00.00 /usr/local/sbin/saslauthd -a pam
root 2365 0.0 0.0 6144 1084 0 RL+ 3:05PM 0:00.00 grep saslauthd
重新啟動Postfix
# /etc/rc.d/postfix restart
15.安裝配置dovecot
- 如果系統中預設安裝了dovecot,那麼要先把它卸載或停用。
# service dovecot stop
- 安裝dovecot
# cd /usr/ports/mail/dovecot2
# make install clean (若已經有安裝過則使用指令 make config reinstall clean)
[X] KQUEUE kqueue(2) support
[X] SSL SSL support
[ ] GSSAPI GSSAPI support
[] VPOPMAIL vpopmail support
[X] LDAP OpenLDAP support
[ ] PGSQL PostgreSQL support
[X] MYSQL MySQL support
[] SQLITE SQLite support
- 安裝完成之後確認是否有以下使用者
# cat /etc/passwd
dovecot:*:143:143:Dovecot User:/var/empty:/usr/sbin/nologin
dovenull:*:144:144:Dovecot login User:/var/empty:/usr/sbin/nologin
- 安裝好 dovcot 後,再執行 dovcot 所提供的憑證產生程式 mkcert.sh
# mkdir /etc/ssl/private //生成的憑證會放在此處
# mkdir /etc/ssl/certs //生成的憑證會放在此處
# cd /usr/local/share/examples/dovecot/
# vi dovecot-openssl.cnf
修改以下內容
# country (2 letter code)
C=TW
# State or Province Name (full name)
ST=Taiwan
# Locality Name (eg. city)
L=Taoyuan
# Organization (eg. company)
O=Bestchem International CO. LTD
# Organizational Unit Name (eg. section)
OU=Mail Server
# Common Name (*.example.com is also possible)
CN=Chemical.com.tw
# E-mail contact
emailAddress=mis.best01@chemical.com.tw
# sh mkcert.sh
如果想研究憑證是如何下指令產生的,可以看 mkcert.sh 內容。
# cd /usr/ports/mail/dovecot/work/dovecot-*/doc/
- 直接新增dovecot.conf設定檔
# vi /usr/local/etc/dovecot/dovecot.conf
加入以下內容:
# Protocols we want to be serving. protocols = imap pop3 sieve
service imap-login { inet_listener imap { address = 127.0.0.1 port = 143 } inet_listener imaps { address = * port = 993 } } service pop3-login { inet_listener pop3 { address = 127.0.0.1 port = 110 } inet_listener pop3s { address = * port = 995 } }
# Mail save directory # 變數意義:%d電子郵件位址的部分域名,如user@domain中的domain;%n使用者名稱 # 與postfix信箱結合,只需要輸入~/Maildir即可 mail_location = maildir:/home/vmail/%d/%n
# dovecot's User first UID #新增設定Dovecot使用者的UID從何開始 first_valid_uid = 125 # dovecot's User first UID #新增設定Dovecot群組的GID從何開始 first_valid_gid = 125
# Directory to Save Error log Message. #新增設定存放錯誤訊息的位置 # 若不設定,則錯誤訊息將與 /var/log/maillog 合併 #log_path = /var/log/dovecot.log
# 將垃圾郵件自動儲存於junk資料夾 plugin { # sieve = ~/dovecot.sieve # sieve_dir = ~/sieve # sieve_global_path = /home/vmail/sieve/dovecot.sievedd sieve_before = /usr/local/etc/dovedot/dovecot.sieve sieve_after = /usr/local/etc/dovedot/dovecot.sieve }
# 設定user連線IMAP時的最大連線數 mail_max_userip_connections = 30
# Should all IMAP and POP3 processes be killed when Dovecot master process shuts down # 當 Dovecot Master程序因故停止時,中斷所有使用者的聯結 shutdown_clients = yes
# 設定舊式的outlook認證方式也可登入Dovecot protocol pop3 { pop3_client_workarounds = outlook-no-nuls oe-ns-eoh }
# Deny Passwd plaintext #不允許密碼有明碼 disable_plaintext_auth = yes
# Set SSL key files. #新增設定SSL認證的位置 ssl = yes ssl_cert = </etc/ssl/certs/dovecot.pem ssl_key = </etc/ssl/private/dovecot.pem ssl_cipher_list = ALL:!HIGH:!SSLv2:!EXP
# 設定MySQL認證方式 service auth { unix_listener /var/spool/postfix/private/auth { mode = 0660 user = postfix group = postfix } }
passdb sql { args = /usr/local/etc/dovecot/dovecot-mysql.conf driver = sql } userdb sql { args = /usr/local/etc/dovecot/dovecot-mysql.conf driver = sql }
# 設定localhost本地端認證方式 #auth default { #auth_mechanisms = plain login # passdb sql { # args = /usr/local/etc/dovecot/dovecot-mysql.conf # } # # userdb sql { # args = /usr/local/etc/dovecot/dovecot-mysql.conf # } # # socket listen { # client { # path = /var/spool/postfix/private/auth # mode = 0660 # user = postfix # group = postfix # } # } #} |
- Use MySQL to manager dovecot user使用MySQL管理Dovecot使用者
% vi dovecot-mysql.conf #新增MySQL連結擋
# 設定連結SQL的驅動 driver = mysql
# 連結SQL的使用者名稱等資料 connect = host=localhost dbname=postfix user=postfix password=best6676
# 查詢使用者密碼語法 password_query = SELECT password FROM mailbox WHERE username = '%u'
# 查詢使用者郵箱目錄,並設定以postfix的權限來寫入目錄 user_query = SELECT maildir, 125 as uid,125 as gid FROM mailbox WHERE username = '%u' |
- 新增垃圾郵件自動分類檔案 % vi dovecot.sieve
require ["fileinto"]; # Move spam to spam folder if header :contains "X-Spam-Flag" ["YES"] { fileinto "Junk"; stop; } |
- 啟動dovecot
# /usr/local/etc/rc.d/dovecot start
使系統啟動時能夠自動啟動dovecot服務。
# vi /etc/rc.conf
加入 dovecot_enable="YES"
如需要停止dovecot
# /usr/local/etc/rc.d/dovecot stop
16.安裝PostfixAdmin
- 至官網下載postfixAdmin後放入web root doc目錄下,我的設定是 /home/web
- 這樣一來就會有 /home/web/postfixadmin的資料夾
- 修改postfixadmin設定檔
% vi /home/web/postfixadmin/config.inc.php
# 開啟管理者安裝介面
$CONF['configured'] = true;
# 預設使用管理介面的語系
$CONF['default_language'] = 'tw';
# 修改連線至MySQL的帳號資料
$CONF['database_type'] = 'mysql';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfix';
$CONF['database_password'] = 'best6676';
$CONF['database_name'] = 'postfix';
# 修改使用郵件儲存位置,讓使用者郵件目錄用以下方式存放
# /home/vmail/chemical.com.tw/cedric
# YES: /usr/local/virtual/domain.tld/username@domain.tld
# NO: /usr/local/virtual/username@domain.tld
$CONF['domain_path'] = 'YES';
# If you don't want to have the domain in your mailbox set this to 'NO'.
# Examples:
# YES: /usr/local/virtual/domain.tld/username@domain.tld
# NO: /usr/local/virtual/domain.tld/username
# Note: If $CONF['domain_path'] is set to NO, this setting will be forced to YES.
$CONF['domain_in_mailbox'] = 'NO';
# 設定建立網域時的預設值
# 預設網域總共能有幾個別名
$CONF['aliases'] = '10';
# 預設網域總共能有幾個信箱
$CONF['mailboxes'] = '10';
# 預設網域總容量配額單位是MBytes
$CONF['maxquota'] = '1024';
# 設定信箱配額,單位是KBytes
$CONF['quota'] = 'YES';
$CONF['quota_multiplier'] = '5120000';
# 當新增使用者時,系統自動寄出的歡迎訊息內容
$CONF['welcome_text'] = <<<EOM
Hi,您好
歡迎使用您的新帳戶
Welcome to your new account.
假如您有任何使用上的問題,請您洽詢管理者,謝謝
if you have any question of your E-mail, contact Administrator for resolve, thank you.
EOM;
- 登入http://網址/postfixadmin/ 新增postfixadmin管理虛擬網域、郵箱的管理者帳號及密碼
- 紀錄下網頁上的管理者密碼編碼,往後若需要重新設定則使用http://網址/postfixadmin/setup 登入後管理後台,並且將管理者密碼修改至config.inc.php中
$CONF['setup_password'] =
'2a36cbcd7fbae2e04afd73b1283fd02c:364cb1ff0fa55f68ee34bfe9c9cf77a1ca93ba56';
- 利用剛才新增的使用者帳號登入 http://網域/postfixadmin,此時便會自動在MySQL中新增postfix所需要用到的各個資料表
17.驗證連線
- SMTP連線測試
# telnet mail.chemical.com.tw 25
Trying 192.168.1.15...
Connected to mail.chemical.com.tw.
Escape character is '^]'.
220 mail.chemical.com.tw ESMTP Postfix (2.8.7)
ehlo mail.chemical.com.tw
250-mail.chemical.com.tw
250-PIPELINING
250-SIZE 10240000
250-ETRN
250-STARTTLS ←出現此行表示正在執行SSL連線
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
- IMAP連線測試
# openssl s_client -connect mail.chemical.com.tw:993
CONNECTED(00000003) 4503:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:/usr/src/secure/lib/libssl/../../../crypto/openssl/ssl/s23_clnt.c:607: mail# openssl s_client -connect localhost:993 CONNECTED(00000003) depth=0 /C=TW/ST=Taiwan/L=Taoyuan/O=Bestchem International CO. LTD/OU=Mail server/CN=chemical.com.tw/emailAddress=mis.best01@chemical.com.tw verify error:num=18:self signed certificate verify return:1 depth=0 /C=TW/ST=Taiwan/L=Taoyuan/O=Bestchem International CO. LTD/OU=Mail server/CN=chemical.com.tw/emailAddress=mis.best01@chemical.com.tw verify return:1 --- Certificate chain 0 s:/C=TW/ST=Taiwan/L=Taoyuan/O=Bestchem International CO. LTD/OU=Mail server/CN=chemical.com.tw/emailAddress=mis.best01@chemical.com.tw i:/C=TW/ST=Taiwan/L=Taoyuan/O=Bestchem International CO. LTD/OU=Mail server/CN=chemical.com.tw/emailAddress=mis.best01@chemical.com.tw --- Server certificate -----BEGIN CERTIFICATE----- MIIC/TCCAmagAwIBAgIJAOKcJ3GVmZ0nMA0GCSqGSIb3DQEBBQUAMIG0MQswCQYD VQQGEwJUVzEPMA0GA1UECBMGVGFpd2FuMRAwDgYDVQQHEwdUYW95dWFuMScwJQYD VQQKEx5CZXN0Y2hlbSBJbnRlcm5hdGlvbmFsIENPLiBMVEQxFDASBgNVBAsTC01h aWwgc2VydmVyMRgwFgYDVQQDEw9jaGVtaWNhbC5jb20udHcxKTAnBgkqhkiG9w0B CQEWGm1pcy5iZXN0MDFAY2hlbWljYWwuY29tLnR3MB4XDTEyMDExMDAyMTgyMVoX DTEzMDEwOTAyMTgyMVowgbQxCzAJBgNVBAYTAlRXMQ8wDQYDVQQIEwZUYWl3YW4x EDAOBgNVBAcTB1Rhb3l1YW4xJzAlBgNVBAoTHkJlc3RjaGVtIEludGVybmF0aW9u YWwgQ08uIExURDEUMBIGA1UECxMLTWFpbCBzZXJ2ZXIxGDAWBgNVBAMTD2NoZW1p Y2FsLmNvbS50dzEpMCcGCSqGSIb3DQEJARYabWlzLmJlc3QwMUBjaGVtaWNhbC5j b20udHcwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKWFhgXAkhIz7MG4/N5B v76oIYrLaZODUrWulKYsmGmsSrhOT5kSLcUsbeqvNAMVp8aSrszK4e9ERHddq8rS D1Lk+rcUe/t/RJUOLQr4e0D/mAnOqDrQfoXYFHlSjv0otYZwIBqo3akIt3L75AOs nynDb1HpjlUnq9Dm5jrj42JfAgMBAAGjFTATMBEGCWCGSAGG+EIBAQQEAwIGQDAN BgkqhkiG9w0BAQUFAAOBgQAJZhyN1tHnnMZyz7DONt2QqRq1L//IeD8qTydzB7Ma Hraj2ezXDw87OKR7STQjAbXSf371DixQZRiLJsi8Qo35ax2h2/tFVOZXbvPkHIFF YphIXjmRYTfHLk9EqXn9SLZf77O/owdzmNYHxWfMowOc+cz7iCDUjwAIZhFEejQ0 gw== -----END CERTIFICATE----- subject=/C=TW/ST=Taiwan/L=Taoyuan/O=Bestchem International CO. LTD/OU=Mail server/CN=chemical.com.tw/emailAddress=mis.best01@chemical.com.tw issuer=/C=TW/ST=Taiwan/L=Taoyuan/O=Bestchem International CO. LTD/OU=Mail server/CN=chemical.com.tw/emailAddress=mis.best01@chemical.com.tw --- No client certificate CA names sent --- SSL handshake has read 926 bytes and written 325 bytes --- New, TLSv1/SSLv3, Cipher is RC4-SHA Server public key is 1024 bit Secure Renegotiation IS supported Compression: NONE Expansion: NONE SSL-Session: Protocol : TLSv1 Cipher : RC4-SHA Session-ID: 38FEA6712DE95C0525067058982DB39175238FA8FCE4DCA3DAA047F13C083E2C Session-ID-ctx: Master-Key: 37DFE9F8EB261A1CE69AD73A97D9F327E9E6DE6C57B16A9D44FD4C9AF509AB4D7F74617829BCAE1A4C0DFDA0084F6C08 Key-Arg : None Start Time: 1326960861 Timeout : 300 (sec) Verify return code: 18 (self signed certificate) --- * OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE AUTH=PLAIN] Dovecot ready. a001 login cedric@chemical.com.tw cedricdk #輸入a001 login 使用者@網域密碼,用來測試是否可登入 a001 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in a001 logout #登出 * BYE Logging out a001 OK Logout completed. closed |
出現以上訊息表示Dovecot IMAP連通
- POP3連線測試
# openssl s_client -connect mail.chemical.com.tw:995
CONNECTED(00000003) depth=0 /C=TW/ST=Taiwan/L=Taoyuan/O=Bestchem International CO. LTD/OU=Mail server/CN=chemical.com.tw/emailAddress=mis.best01@chemical.com.tw verify error:num=18:self signed certificate verify return:1 depth=0 /C=TW/ST=Taiwan/L=Taoyuan/O=Bestchem International CO. LTD/OU=Mail server/CN=chemical.com.tw/emailAddress=mis.best01@chemical.com.tw verify return:1 --- Certificate chain 0 s:/C=TW/ST=Taiwan/L=Taoyuan/O=Bestchem International CO. LTD/OU=Mail server/CN=chemical.com.tw/emailAddress=mis.best01@chemical.com.tw i:/C=TW/ST=Taiwan/L=Taoyuan/O=Bestchem International CO. LTD/OU=Mail server/CN=chemical.com.tw/emailAddress=mis.best01@chemical.com.tw --- Server certificate -----BEGIN CERTIFICATE----- MIIC/TCCAmagAwIBAgIJAOKcJ3GVmZ0nMA0GCSqGSIb3DQEBBQUAMIG0MQswCQYD VQQGEwJUVzEPMA0GA1UECBMGVGFpd2FuMRAwDgYDVQQHEwdUYW95dWFuMScwJQYD VQQKEx5CZXN0Y2hlbSBJbnRlcm5hdGlvbmFsIENPLiBMVEQxFDASBgNVBAsTC01h aWwgc2VydmVyMRgwFgYDVQQDEw9jaGVtaWNhbC5jb20udHcxKTAnBgkqhkiG9w0B CQEWGm1pcy5iZXN0MDFAY2hlbWljYWwuY29tLnR3MB4XDTEyMDExMDAyMTgyMVoX DTEzMDEwOTAyMTgyMVowgbQxCzAJBgNVBAYTAlRXMQ8wDQYDVQQIEwZUYWl3YW4x EDAOBgNVBAcTB1Rhb3l1YW4xJzAlBgNVBAoTHkJlc3RjaGVtIEludGVybmF0aW9u YWwgQ08uIExURDEUMBIGA1UECxMLTWFpbCBzZXJ2ZXIxGDAWBgNVBAMTD2NoZW1p Y2FsLmNvbS50dzEpMCcGCSqGSIb3DQEJARYabWlzLmJlc3QwMUBjaGVtaWNhbC5j b20udHcwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKWFhgXAkhIz7MG4/N5B v76oIYrLaZODUrWulKYsmGmsSrhOT5kSLcUsbeqvNAMVp8aSrszK4e9ERHddq8rS D1Lk+rcUe/t/RJUOLQr4e0D/mAnOqDrQfoXYFHlSjv0otYZwIBqo3akIt3L75AOs nynDb1HpjlUnq9Dm5jrj42JfAgMBAAGjFTATMBEGCWCGSAGG+EIBAQQEAwIGQDAN BgkqhkiG9w0BAQUFAAOBgQAJZhyN1tHnnMZyz7DONt2QqRq1L//IeD8qTydzB7Ma Hraj2ezXDw87OKR7STQjAbXSf371DixQZRiLJsi8Qo35ax2h2/tFVOZXbvPkHIFF YphIXjmRYTfHLk9EqXn9SLZf77O/owdzmNYHxWfMowOc+cz7iCDUjwAIZhFEejQ0 gw== -----END CERTIFICATE----- subject=/C=TW/ST=Taiwan/L=Taoyuan/O=Bestchem International CO. LTD/OU=Mail server/CN=chemical.com.tw/emailAddress=mis.best01@chemical.com.tw issuer=/C=TW/ST=Taiwan/L=Taoyuan/O=Bestchem International CO. LTD/OU=Mail server/CN=chemical.com.tw/emailAddress=mis.best01@chemical.com.tw --- No client certificate CA names sent --- SSL handshake has read 926 bytes and written 325 bytes --- New, TLSv1/SSLv3, Cipher is RC4-SHA Server public key is 1024 bit Secure Renegotiation IS supported Compression: NONE Expansion: NONE SSL-Session: Protocol : TLSv1 Cipher : RC4-SHA Session-ID: 9D509665DFA009491FE3774E6E28E6464F486E07DB0E54DE23AC02003026EE60 Session-ID-ctx: Master-Key: 683A6D5BBCFF5E9505F296C4152D8CF442F504B22FBCDB3EDC74BF5A3D2FC4B196395196F88139CFB5A923745F5AB102 Key-Arg : None Start Time: 1326961946 Timeout : 300 (sec) Verify return code: 18 (self signed certificate) --- +OK Dovecot ready. quit #登出 +OK Logging out closed |
出現以上訊息表示Dovecot POP3連通
18.安裝p5-IO-tty可透過Webmin修改Postfix設定檔
# cd /usr/ports/devel/p5-IO-Tty/
# make install clean
19.安裝amavisd-new、spamassassin、clamav外佈垃圾郵件及防毒程式
- 安裝程式
# cd /usr/ports/mail/amavisd-new; make install clean
# cd /usr/ports/mail/p5-Mail-SpamAssassin; make install clean
# cd /usr/ports/mail/p5-Mail-ClamAV; make install clean
ClamAV若ports裝不起來則使用 # pkg_add -r p5-Mail-ClamAV 安裝
# cd/usr/ports/security/clamav ; make install clean
設定開機後便啟動服務
# vi /etc/rc.conf
amavisd_enable="YES"
clamav_clamd_enable="YES"
clamav_freshclam_enable="YES"
- 更新ClamAV病毒碼
# /usr/local/bin/freshclam
若出現訊息:
This version of the ClamAV engine is outdated
則需更新ClamAV 程式
# cd/usr/ports/security/clamav ; make deinstall clean #解除安裝
# cd/usr/ports/security/clamav ; make install clean #重新安裝
- 修改 amavisd.conf 設定檔
# vi /usr/local/etc/amavisd.conf
$mydomain = 'chemical.com.tw'; # a convenient default for other settings
@local_domains_maps = ( [".$mydomain","dongsong.com.tw"] ); # list of all local domains
#$QUARANTINEDIR = '/var/virusmails'; #註解此行 (若未註解則必須定期去資料夾刪除被判定為病毒的郵件)
$virus_admin = "postmaster\@$mydomain"; # notifications recip.
$mailfrom_notify_admin = "postmaster\@$mydomain"; # notifications sender
$mailfrom_notify_recip = "postmaster\@$mydomain"; # notifications sender
$mailfrom_notify_spamadmin = "postmaster\@$mydomain"; # notifications sender
$final_virus_destiny = D_DISCARD;
$final_banned_destiny = D_DISCARD;
$final_spam_destiny = D_PASS; #!!! D_DISCARD / D_REJECT
$final_bad_header_destiny = D_PASS;
- 修改 spamassassin 設定檔
# cd /usr/local/etc/mail/spamassassin/
# cp local.cf.sample local.cf
# vi local.cf
去掉#註解
# Add *****SPAM***** to the Subject header of spam e-mails
# 在垃圾信件主旨加上指定文字
rewrite_header Subject *****SPAM 垃圾信件*****
# Set which networks or hosts are considered 'trusted' by your mail
# server (i.e. not spammers)
# 信任的mail server的網段位置 (就是自己的mail server網段)
trusted_networks 60.251.187.
# Set the threshold at which a message is considered spam (default: 5.0)
# 判定為 spam 所需要的分數
required_score 5.0
# Use Bayesian classifier (default: 1)
# 使用貝氏過濾法
use_bayes 1
# Bayesian classifier auto-learning (default: 1)
# 使用貝氏垃圾信件過濾自動學習
bayes_auto_learn 1
- 在 master.cf 加入以下設定
# vi /etc/postfix/master.cf
# =============================================================== # for amavisd-new smtp-amavis unix - - n - 2 smtp -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes -o disable_dns_lookups=yes
127.0.0.1:10027 inet n - n - - smtpd -o content_filter= -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks,no_milters -o smtpd_helo_restrictions= -o smtpd_client_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o mynetworks=127.0.0.1/32 -o smtpd_authorized_xforward_hosts=127.0.0.1/32 # ================================================================ |
- 在main.cf加入以下設定
# vi /etc/postfix/main.cf
content_filter = smtp-amavis:[127.0.0.1]:10024
- 將clamav使用者加入vscan群組中,避免amavisd產生以下錯誤訊息
Oct 3 18:22:22 mail amavis[12603]: (12603-01-26) (!!)run_av (ClamAV-clamd) FAILED - unexpected , output="/var/lib/amavis/tmp/amavis-20101003T182123-12603/parts: lstat() failed: Permission denied. ERROR\n" Oct 3 18:22:22 mail amavis[12603]: (12603-01-26) (!!)ClamAV-clamd av-scanner FAILED: CODE(0x9015568) unexpected , output="/var/lib/amavis/tmp/amavis-20101003T182123-12603/parts: lstat() failed: Permission denied. ERROR\n" at (eval 86) line 527. Oct 3 18:22:22 mail amavis[12603]: (12603-01-26) (!!)WARN: all primary virus scanners failed, considering backups |
# vi /etc/group
vscan:*:110:clamav
- 重新啟動服務
# /usr/local/etc/rc.d/clamav-clamd restart
# /usr/local/etc/rc.d/amavisd restart
# /etc/rc.d/postfix restart
- SPF的全名是Sender Policy Framwork,它是一種可以用來檢查SMTP Server是否有偽造其它人的Domain或是虛設一個Domain,假設我的Mail Server為mail.chemical.com.tw,要是有某個傢伙一直以我的Domain偽造Mail 的話,哪一天被人家SPAM了都還不知道為什麼呢,因此SPF的出現可以讓Mail Server檢查信件來源是否符合正確的來源,也成為另一種對抗垃圾信的方式
- 要怎麼做呢?其實很簡單,只要去修改DNS以及Mail Server的設定就可以了!
進入以下網站產生SPF http://www.mailradar.com/spf/
設定mail server位置 選擇含有A記錄 選擇含有MX記錄 PTR記錄官方建議不選擇 輸入A記錄IP
輸入MX記錄位置
輸入IPV4的網段,或者單一IP亦可
選擇 –all為 yes
將產生結果貼入DNS中 |
- 修改DNS Server,加入以下紀錄
@ TXT "v=spf1 ip4:60.251.187.193/27 a:60.251.187.199 mx:mail.chemical.com.tw ~all" |
- 設定好之後,我們可以用nslookup來檢查一下SPF Record
% nslookup -query=txt mail.chemical.com.tw
Server: 168.95.1.1 Address: 168.95.1.1#53
Non-authoritative answer: chemical.com.tw text = "google-site-verification=lkb0BSeeGRp2AyVYqjfN9VvZ4i1yHDkLw4_IGozNqkg" chemical.com.tw text = "v=spf1\009ip4:60.251.187.193/27 a:60.251.187.199 mx:mail.chemical.com.tw ~all"
Authoritative answers can be found from: chemical.com.tw nameserver = ns2.chemical.com.tw. chemical.com.tw nameserver = ns1.chemical.com.tw. ns1.chemical.com.tw internet address = 60.251.187.198 ns2.chemical.com.tw internet address = 60.251.187.198 |
出現以上訊息表示設定成功
- 接下來設定postfix
# cd /usr/ports/mail/sid-milter/ && make install clean
- 接下來在 /etc/rc.conf 加入下面這幾行
# vi /etc/rc.conf
miltersid_enable="YES"
miltersid_flags="-r 1 -u postfix"
miltersid_pid="/var/run/sid-filter.pid"
miltersid_socket="local:/var/spool/postfix/private/sid-filter"
- 最後在 Postfix 的 main.cf 加入設定
# vi /etc/postfix/main.cf
# 設定Postfix核對SPF記錄 smtpd_milters=unix:private/sid-filter |
- 接下來可以直接重開機,或是直接啟動milter-sid,啟動之後檢查一下id-milter有沒有起來,有看到東西就OK了
# /usr/local/etc/rc.d/milter-sid start
# ps ax | grep 'sid-filter'
45122 ?? Is 0:00.01 /usr/local/libexec/sid-filter -r 1 -u postfix -l -p local:/var/spool/postfix/private/sid-filter -P /var/run/sid-filter.pid |
出現以上訊息表示設定成功
- 測試用Gmail寄封信到這台有檢查SPF的Mail Server,寄送後利用觀看郵件原始碼來查看Mail Header有什麼改變
Received-SPF: pass (google.com: domain of cedric@9song.com.tw designates 10.182.44.10 as permitted sender) client-ip=10.182.44.10; Authentication-Results: mr.google.com; spf=pass (google.com: domain of cedric@9song.com.tw designates 10.182.44.10 as permitted sender) smtp.mail=cedric@9song.com.tw Received: from mr.google.com ([10.182.44.10]) |
已經開始有出現檢查SPF的動作了,從Gmail寄來且它本身有加入SPF Record,因此顯示的結果就是pass
若是有假造的E-mail,則Header可能會出現以下狀況,假設有個 kgnxcnqslnh@sidea.uos.ac.kr 假造 ujxerafxghayzjir@ms12.hinet.net寄了信,結果就會如下所示
Authentication-Results: mail.server.domain from=ujxerafxghayzjir@ms12.hinet.net; sender-id=neutral; spf=fail (DomainDoesNotExist)
也可能還有這些情況,信就直接被禁止了
Authentication-Results: mail.server.domain from=itggpkqadmok@pagina.nl; sender-id=neutral; spf=fail (NotPermitted)
21.利用MX tools來測試自己的郵件伺服器
- 登入網站:http://www.checkor.com/
- 輸入自己的Mail Server位置,若有出現紅字的話,則表示Mail Server含有漏洞,請重頭再檢查一次自己的設定