TShopping

 找回密碼
 註冊
搜索
查看: 4083|回復: 0
打印 上一主題 下一主題

[教學] Centos6~9 Postfix pop3 dovecot sasl server安裝與設定

[複製鏈接]
跳轉到指定樓層
1#
發表於 2014-10-15 14:42:42 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
 
Push to Facebook
Mail server 與合法的主機名稱
事實上目前已經沒有人會使用 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,先安裝程式起來:
  1. yum -y install postfix
複製代碼
安裝好後設定檔位於 /etc/postfix/main.cf

編輯此檔內容,修改以下欄位:

     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


完成以上設定後存檔並執行以下兩行指令:
  1. postmap hash:/etc/postfix/access
  2. postalias hash:/etc/aliases
複製代碼


接著啟動postfix:

  1. 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程式,執行指令:

  1. yum -y install dovecot
複製代碼


設定檔是

  1. /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_access_groups = mail

mail_location = maildir:~/Mail

( 跟上面POSTFIX須對應,不然OUTLOOK會找不到信)

  1. home_mailbox = Mail  原先預設的home mail box 位址在/var/~Mail/目錄下,改成使用者家目錄的預設為 Maildir/ 我愛用Mail當目錄名稱,此處跟後面POP3設定有關,不能搞錯
複製代碼

上述postfix/main.cf不加的話 請

打開
  1. mail_location = mbox:~/mail:INBOX=/var/mail/%u
複製代碼



設好後存檔離開即可。



這個設定很重要,要與前一章postfix的設定相符,否則會發生信件能寄不能收的情況,

centos 6 在postfix與dovecot預設收發郵件的路徑在 /var/~mail,這是個link連結到 /var/spool/mail這個目錄,

而一般系統安裝時留給 /var 的空間有限,所以我將郵件目錄放到使用者的家目錄底下的 Mail這個檔案夾,

要放到哪裡可以隨管理者的喜好與系統資源決定,這只是我的習慣而已。


重點是與postfix設定要一致才能找得到信件就好。


以上檔案設定完成即可啟用dovecot服務:

  1. service dovecot start
複製代碼

測試是否能正確收信,照postfix那章的說明寄一封信給自己,然後執行以下指令:


telnet localhost pop3
user 使用者名稱
pass 密碼
list (這是列出信件)
quit (離開)


有看到信件列表即表示設定正確,dovecot的pop3服務正常。


依照前面章節設定完mail server與pop3 server之後,只能算是簡單的將郵件收發功能架設起來而已,目前僅能在區域網路寄信,實際上使用起來有很多不便的地方,


使用者在外面想寄信是不被允許的。


要讓使用者可以在任何地方寄信就需要修改郵件伺服器的認證機制,加入SASL身份認證機制才行。


SASL可以透過dovecot或是cyrus sasl,先說明透過dovecot的方式如下:


修改

  1. /etc/dovecot/conf.d/10-master.conf
複製代碼
service auth {
  # auth_socket_path points to this userdb socket by default. It's typically
  # used by dovecot-lda, doveadm, possibly imap process, etc. Its default
  # permissions make it readable only by root, but you may need to relax these
  # permissions. Users that have access to this socket are able to get a list
  # of all usernames and get results of everyone's userdb lookups.
#  unix_listener auth-userdb {
    unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
  }

存檔後離開



修改 /etc/dovecot/conf.d/10-auth.conf
auth_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軟體套件:


  1. yum -y install cyrus*
複製代碼


設定main.cf同上,只是要將這兩行註記掉:

  1. #smtpd_sasl_type = dovecot
  2. #smtpd_sasl_path = private/auth
複製代碼


然後要啟動saslauthd與重啟postfix服務:

  1. service saslauthd start
  2. service postfix restart
複製代碼

兩種方式都能達到驗證使用者身份的目的,喜歡哪種就用哪種。


弄好不要忘記去中華電信申請DNS反解
https://hidomain.hinet.net/dns_reverse_s/rs-login.php

如果在OUTLOOK測試時出現下列情況出現下面訊息
Plaintext authentication disallowed on non-secure (SSL/TLS) connections



Allow insecure POP3/IMAP connections

If you want to enable POP3/IMAP services without STARTTLS for some reason (again, not recommended), please update below two parameters in Dovecot config file /etc/dovecot/dovecot.conf and restart Dovecot service:
on Linux and OpenBSD, it's

  1. vi /etc/dovecot/dovecot.conf
複製代碼
改成

  1. disable_plaintext_auth=no
  2. ssl=yes
複製代碼

Again, it's strongly recommended to use only POP3S/IMAPS for better security.
Default and recommended setting configured by iRedMail is:
預設是

  1. disable_plaintext_auth=yes
  2. ssl=required
複製代碼

Allow insecure SMTP connection on port 25

Please comment out lines below in Postfix config file
找到檔案

  1. vi /etc/postfix/main.cf
複製代碼

and reload or restart Postfix service:
修改後重啟

  1. smtpd_sasl_auth_enable = yes
  2. smtpd_sasl_security_options = noanonymous
複製代碼


註解下列
# force all clients to use secure connection through port 25
#smtpd_tls_auth_only=yes


/etc/init.d/postfix restart
/etc/init.d/dovecot restart


就可以了

參考文章
http://www.iredmail.org/docs/allow.insecure.pop3.imap.smtp.connections.html




 

臉書網友討論
*滑块验证:
您需要登錄後才可以回帖 登錄 | 註冊 |

本版積分規則



Archiver|手機版|小黑屋|免責聲明|TShopping

GMT+8, 2024-4-25 21:14 , Processed in 0.100523 second(s), 25 queries .

本論壇言論純屬發表者個人意見,與 TShopping綜合論壇 立場無關 如有意見侵犯了您的權益 請寫信聯絡我們。

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表