事實上目前已經沒有人會使用 IP 來寄信了,我們通常接收到的 email 都是使用『帳號@主機名稱』的方式來處理的, 所以說,你的郵件伺服器『就一定要有一個合法註冊過的主機名稱』才可以。為什麼呢? 因為網路惡意使用與垃圾郵件氾濫的種種因素,導致我們不允許直接利用主機的 IP 來寄信了,否則每部有 IP 的主機都能寄信... 因此,你想要架設 mail server 就『必需』要有合法的主機名稱囉。 OK!既然我只要一個合法的主機名稱即可,那麼表示我不需要架設一部 DNS 主機囉? 是的,你可以這樣認為!只要你擁有合法的主機名稱,亦即在 DNS 的查詢系統當中你的主機名稱擁有一個 A 的標誌, 理論上你的 mail server 就可以架設成功。只不過由於目前網際網路上面的廣告信、 垃圾信與病毒信等佔用了太多的頻寬,導致整個網路社會花費過多的成本在消耗這些垃圾資料。 所以為了杜絕可惡的垃圾信件,目前的大型網路供應商 (ISP) 都會針對不明來源的郵件加以限制, 這也就是說『想要架設一部簡單可以運作的 mail server 越來越難了』。 郵件伺服器分MTA 寄件主機與POP3 收件主機,此處設定以一台MTA與一台POP3為主, 不討論複雜且多樣的mail sever設定。 MTA主機跑的mail server程式名稱為postfix,先安裝程式起來:
編輯此檔內容,修改以下欄位: inet_interfaces = all 聆聽所有界面,預設只聆聽localhost myhostname = hostname 本機完整主機名稱,前面章節有提過 #FQDN mail.bell.idv.tw <- DNS server MX設定要相符 mydomain = 你的網域 myorigin = $mydomain inet_protocols = ipv4 ipv4 ony。除非你的環境有ipv6,可以填all或ipv6 mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain mynetworks = 你信任的IP網段(例如192.168.0.0/24 10.0.0.0/8 這樣), 127.0.0.0/8,hash:/etc/postfix/access home_mailbox = Mail 原先預設的home mail box 位址在/var/~Mail/目錄下,改成使用者家目錄的預設為 Maildir/ 我愛用Mail當目錄名稱,此處跟後面POP3設定有關,不能搞錯 relay_domains=$mydestination 設定可以轉寄mail的主機,因垃圾郵件盛行,此處必須限制 alias_maps=hash:/etc/aliases alias_database=hash:/etc/aliases 加入saslauth smtp_sasl_auth_enable = no smtpd_sasl_auth_enable = yes smtp_sasl_security_options = noanonymous broken_auth_clinets = yes smtpd_recipient_restrictions = reject_non_fqdn_sender reject_non_fqdn_recipient reject_unknown_sender_domain reject_unknown_recipient_domain reject_unlisted_sender permit_mynetworks permit_sasl_authenticated reject_rbl_client dnsbl.sorbs.net reject_rbl_client bl.spamcop.net reject_rbl_client xbl.spamhaus.org reject_unauth_destination 完成以上設定後存檔並執行以下兩航指令: postmap hash:/etc/postfix/access postalias hash:/etc/aliases 接著啟動postfix: service postfix start 測試一下mail server是否正常工作: 測試,請依紅字輸入指令與測試文字後,按下Enter執行 假設系統已經有一個帳號叫做bell 4.1. [root@dns etc]# telnet localhost 25 Trying ::1... Connected to localhost. Escape character is '^]'. 220 你的完整主機名稱 ESMTP Postfix ehlo localhost 250-你的完整主機名稱 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN mail from:tshopping 250 2.1.0 Ok rcpt to:tshopping 250 2.1.5 Ok data 354 End data with <CR><LF>.<CR><LF> Welcome to use postfix mail system . 250 2.0.0 Ok: queued as DF96FA1A04 quit 221 2.0.0 Bye Connection closed by foreign host. 以上紅色字樣是你要手動輸入的資料,黑色字樣是系統的訊息。 如果顯示訊息都正常,表示postfix已經正確聆聽port 25,也可以將信件寄出。 常遇見的設定問題往往是防火牆與selinux搞的鬼,設定server之前最好先將防火牆與selinux關閉, 等設定確認都正確後再開啟。 Postfix安裝好後只負責寄信,收信要靠POP3 service,所以需要安裝dovecot程式,執行指令:
試定檔是 /etc/dovecot/dovecot.conf 修改以下內容: protocols = pop3 讓dovecot只監聽pop3服務即可,port是110。 設好後存檔離開即可。 因為Centos 6之後將原本單一的設定檔拆分成許多部份放在 /etc/dovecot/conf.d目錄下,所以還有一些設定檔需要修改。 編輯 /etc/dovecot/conf.d/10-ssl.conf 修改與啟用本行 ssl = no 設好後存檔離開即可。 編輯 /etc/dovecot/conf.d/10-auth.conf 修改與啟用本行 disable_plaintext_auth = no 這是取消明碼傳輸,不改掉的話使用outlook收信將會出現錯誤訊息。 編輯 /etc/dovecot/conf.d/10-mail.conf 新增此行 mail_location = maildir:~/Mail ( 跟上面POSTFIX須對應,不然OUTLOOK會找不到信) 設好後存檔離開即可。 這個設定很重要,要與前一章postfix的設定相符,否則會發生信件能寄不能收的情況, centos 6 在postfix與dovecot預設收發郵件的路徑在 /var/~mail,這是個link連結到 /var/spool/mail這個目錄, 而一般系統安裝時留給 /var 的空間有限,所以我將郵件目錄放到使用者的家目錄底下的 Mail這個檔案夾, 要放到哪裡可以隨管理者的喜好與系統資源決定,這只是我的習慣而已。 重點是與postfix設定要一致才能找得到信件就好。 以上檔案設定完成即可啟用dovecot服務:
測試是否能正確收信,照postfix那章的說明寄一封信給自己,然後執行以下指令: telnet localhost pop3 有看到信件列表即表示設定正確,dovecot的pop3服務正常。 依照前面章節設定完mail server與pop3 server之後,只能算是簡單的將郵件收發功能架設起來而已,目前僅能在區域網路寄信,實際上使用起來有很多不便的地方, 使用者在外面想寄信是不被允許的。 要讓使用者可以在任何地方寄信就需要修改郵件伺服器的認證機制,加入SASL身份認證機制才行。 SASL可以透過dovecot或是cyrus sasl,先說明透過dovecot的方式如下: 修改 /etc/dovecot/conf.d/10-master.conf service auth { 存檔後離開 修改 /etc/dovecot/conf.d/10-auth.confauth_mechanisms = plain login 存檔後離開 修改 /etc/postfix/main.cf mynetworks = 127.0.0.0/8 這樣即使是區網內使用者,未經過身份認證也不能寄信,提高安全性。 檔末新增以下設定: smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_sasl_auth_enable = yes smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, reject_non_fqdn_sender, reject_unknown_sender_domain, reject_rbl_client cbl.abuseat.org, reject_rbl_client bl.spamcop.net, reject_rbl_client sbl-xbl.spamhaus.org broken_sasl_auth_clients = yes smtpd_sasl_security_options = noanonymous mailbox_size_limit = 512000000 message_size_limit = 102400000 最後兩行是設定郵箱大小與單一信件大小,信件預設是10240000,也就是10MB, 在現在的環境下已經顯得有點小了,我放大到100MB,管理者可視情況調整。 重新啟動postfix dovecto服務之後可以進行登入測試,看設定是否正確: telnet localhost 25 ehlo localhost 要出現以下這兩行才是正確: 250-AUTH LOGIN PLAIN 250-AUTH=LOGIN PLAIN 如果要使用cyrus的sasl機制則如下, 安裝cyrus sasl軟體套件: yum -y install cyrus* 設定main.cf同上,只是要將這兩行註記掉: #smtpd_sasl_type = dovecot #smtpd_sasl_path = private/auth 然後要啟動saslauthd與重啟postfix服務: service saslauthd start service postfix restart 兩種方式都能達到驗證使用者身份的目的,喜歡哪種就用哪種。 弄好不要忘記去中華電信申請DNS反解 https://hidomain.hinet.net/dns_reverse_s/rs-login.php |