Email-Server

工作中的電子郵件伺服器突然壞了

  • September 4, 2016

好的,所以這台伺服器的背景是:我在 AWS 上執行的 Ubuntu 14.04 伺服器上安裝了 postfix/dovecot/spamassassin/opendkim。在把我的頭髮拉了一點之後,一切正常。為什麼,哦,為什麼,我不只是把這該死的東西放在一邊——好吧,我們永遠不會知道答案。我將它升級到 Ubuntu 16.04,升級後一切正常!為了以防萬一,我製作了一個備份映像,但要啟動並執行它只需要在一個配置文件中進行一次更改。

然後,由於某種莫名其妙的原因,我的住宅 IP 發生了變化(它應該是靜態的,我已經擁有相同的 IP 一年半多了)。

現在,當我嘗試從 Thunderbird 發送電子郵件時,我在 /var/log/mail.log 中得到了這個:

Sep  4 14:03:19 ip-x-x-59-35 postfix/master[2746]: reload -- version 3.1.0, configuration /etc/postfix
Sep  4 14:03:30 ip-x-x-59-35 postfix/smtpd[2933]: warning: dict_nis_init: NIS domain name not set - NIS lookups disabled
Sep  4 14:03:30 ip-x-x-59-35 postfix/smtpd[2933]: connect from unknown[x.x.x.61]
Sep  4 14:03:30 ip-x-x-59-35 postfix/smtpd[2933]: warning: connect to Milter service unix:/opendkim/opendkim.sock: Connection refused
Sep  4 14:03:30 ip-x-x-59-35 postfix/smtpd[2933]: Anonymous TLS connection established from unknown[x.x.x.61]: TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)
Sep  4 14:03:30 ip-x-x-59-35 postfix/smtpd[2933]: NOQUEUE: reject: RCPT from unknown[x.x.x.61]: 550 5.7.25 Client host rejected: cannot find your hostname, [x.x.x.61]; from=<blanked> to=<blanked> proto=ESMTP helo=<[192.168.0.10]>
Sep  4 14:03:32 ip-x-x-59-35 postfix/smtpd[2933]: disconnect from unknown[x.x.x.61] ehlo=2 starttls=1 auth=1 mail=1 rcpt=0/1 quit=1 commands=6/7

我的 IP 甚至在配置文件中的唯一位置是在 /etc/postfix/main.cf 中,所以我進去並更新了它(到 xxx0/24,就像以前一樣)。重新啟動後綴,仍然無法正常工作。我也非常困惑為什麼opendkim拒絕通過套接字進行連接……

如果有人可以提供一些見解,將不勝感激。我可以根據需要提供更多資訊。我最初按照這個由四部分組成的教程來設置電子郵件伺服器。我的配置文件與教程第 2 部分中的配置文件幾乎相同。

編輯:我開始回顧上週的日誌(在這個問題開始之前)。opendkim 套接字已經拒絕連接有一段時間了,但是郵件伺服器在發生這種情況時仍在工作。當我的筆記型電腦連接到伺服器以發送郵件時,我注意到日誌中有一個重大差異。這是IP更改之前的樣子:

Aug 29 17:03:43 ip-35 postfix/smtpd[22986]: warning: dict_nis_init: NIS domain name not set - NIS lookups disabled
Aug 29 17:03:43 ip-35 postfix/smtpd[22986]: connect from CPE00fc8d374753-CM00fc8d374750.cpe.net.cable.rogers.com[old.ip.138.5]
Aug 29 17:03:43 ip-35 postfix/smtpd[22986]: warning: connect to Milter service unix:/opendkim/opendkim.sock: Connection refused
Aug 29 17:03:43 ip-35 postfix/smtpd[22986]: Anonymous TLS connection established from **cpe00fc8d374753-cm00fc8d374750.cpe.net.cable.rogers.com**[old.ip.138.5]: TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)
Aug 29 17:03:43 ip-35 postfix/smtpd[22986]: 8931F80078: client=CPE00fc8d374753-CM00fc8d374750.cpe.net.cable.rogers.com[old.ip.138.5], sasl_method=PLAIN, sasl_username=username@website.com

請注意在 IP 之前有一個主機名嗎?現在不見了,它發送給 Thunderbird 的錯誤是它找不到我的主機名。我相信在設置伺服器時,這是我打開的安全選項之一。我真的很難過如何在不影響郵件伺服器安全性的情況下修復它。

另外,opendkim 的東西很奇怪。OpenDkim 是我在切換到 16.04 後必須更改的一件事——由於切換到 systemctl (systemd),它為 opendkim 服務創建了一個新文件。出於某種原因,opendkim 在另一個地方尋找它的配置文件,所以我只是在那個 .service 文件中添加了一個參數,將它指向配置文件 /etc/opendkim.conf ……它工作得很好。我專門檢查以確保它啟動並正常工作。所以我真的很摸不著頭腦。

問題確實是我的 ISP 出於某種奇怪的原因,在我發送電子郵件時沒有將主機名與我的 IP 一起發送到我的郵件伺服器。因此,由於 /etc/postfix/main.cf 中的 smtpd_sender_restrictions 和 smtpd_recipient_restrictions,它拒絕了未知主機名。

它看起來像這樣:

smtpd_recipient_restrictions = reject_unknown_client_hostname, reject_unknown_sender_domain, reject_unknown_recipient_domain, reject_unauth_pipelining, permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, reject_invalid_hostname, reject_non_fqdn_sender
smtpd_sender_restrictions = reject_unknown_sender_domain, reject_sender_login_mismatch

您會注意到 permit_mynetworks 出現reject_unknown_client_hostname 之後。為了解決這個問題,我只需將 permit_mynetworks 移到列表的前面,並將其添加到 sender_restrictions 列表中。在變數 mynetworks 中,我輸入了我的特定 IP 而不是以 .0 結尾,以避免其他人能夠發送(儘管他們仍然需要我的密碼)。我不確定移動是否有任何重大的安全影響,如果有人能找到更好的方法來解決它,我將不勝感激!

opendkim 的事情仍然無法正常工作,但這是一個單獨的問題。

引用自:https://serverfault.com/questions/801026