我在我的 VPS 上重新安裝了全新的、乾淨的 Debian 8。
全部設定為預設值。
dpkg -s exim4
並dpkg -s postfix
說進出口不是安裝了,那個後綴是安裝。透過lsof -i :25
顯示 PID 478,然後ps p 478
顯示 來確認這一點478 ? Ss 0:00 /usr/lib/postfix/master
。我沒做過apt-get install postfix
,好像已經預設安裝了。
我已經example.com
由我的註冊商完成了 DNS MX 記錄,將其定向到我的伺服器。
我剛剛從 Gmail 發送了一封電子郵件至[email protected]
。
我
No mail
做的時候還是看的$ mail
。如何查看東西是否已到達 postfix?
是否需要在全新安裝的 Debian 上進行設定以接受來自互聯網的電子郵件?
我應該在本地建立郵箱
root
以接受來自外部郵件發送者的郵件嗎[email protected]
?
這是結果iptables
(未修改,預設配置):
root@blah:~# iptables -nvL
Chain INPUT (policy ACCEPT 77135 packets, 50M bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 2 packets, 120 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 66416 packets, 11M bytes)
pkts bytes target prot opt in out source destination
我現在看到了cat /var/log/mail.log
:
Nov 22 11:57:32 blah postfix/smtpd[10485]: connect from mail-ua0-f171.google.com[209.85.xxx.xxx]
Nov 22 11:57:32 blah postfix/smtpd[10485]: NOQUEUE: reject: RCPT from mail-ua0-f171.google.com[209.85.xxx.xxx]: 454 4.7.1 <[email protected]>: Relay access denied; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<mail-ua0-f171.google.com>
Nov 22 11:57:32 blah postfix/smtpd[10485]: disconnect from mail-ua0-f171.google.com[209.85.xxx.xxx]
答案1
此行包含您需要的有用信息
Nov 22 11:57:32 blah postfix/smtpd[10485]: NOQUEUE: reject: RCPT from mail-ua0-f171.google.com[209.85.xxx.xxx]: 454 4.7.1 <[email protected]>: Relay access denied; from=<[email protected]> to=<[email protected] ...
這告訴您的是,您的機器拒絕將來自 Google 的訊息轉發到[電子郵件受保護]。現在,您知道您的機器是 example.com,但顯然您的機器不是。
解決方案:修改本機設定以包含 example.com 作為本機的名稱。 Postfix 網站上有一個易於閱讀的文件 (((BASIC_CONFIGURATION_README.html)[http://www.postfix.org/BASIC_CONFIGURATION_README.html#mydestination])解釋如何設定:
我自己的域名
mydomain 參數指定 $myhostname 的父網域。預設情況下,它是透過剝離第一部分從 $myhostname 派生的(除非結果是頂級網域)。
相反,如果您在 main.cf 中指定 mydomain,則 Postfix 將使用其值為 myhostname 參數產生完全限定的預設值。
範例(僅指定以下其中一項):
/etc/postfix/main.cf: mydomain = local.domain mydomain = virtual.domain (virtual interface)
接收哪些網域的郵件
mydestination 參數指定機器將在本機傳送哪些網域,而不是轉送到另一台機器。預設為機器本身接收郵件。請參閱 VIRTUAL_README 檔案以了解如何為託管網域設定 Postfix。
您可以指定零個或多個網域、「/file/name」模式和/或「type:table」查找表(例如 hash:、btree:、nis:、ldap: 或 mysql:),並以空格分隔/ 或逗號。 「/file/name」模式被其內容取代; “type:table”請求完成表格查找並僅測試是否存在:查找結果將被忽略。
重要資訊:如果您的電腦是整個網域的郵件伺服器,則也必須列出 $mydomain。
範例1:預設設定。
/etc/postfix/main.cf: mydestination = $myhostname localhost.$mydomain localhost
範例 2:網域範圍的郵件伺服器。
/etc/postfix/main.cf: mydestination = $myhostname localhost.$mydomain localhost $mydomain
範例 3:具有多個 DNS A 記錄的主機。
/etc/postfix/main.cf: mydestination = $myhostname localhost.$mydomain localhost www.$mydomain ftp.$mydomain
注意:為了避免郵件傳遞循環,您必須列出電腦的所有主機名,包括 $myhostname 和 localhost.$mydomain。
所以,這應該夠了:
mydomain = example.com
...
mydestination = $myhostname localhost.$mydomain localhost $mydomain
答案2
除了 roaima 的答案之外,這也解決了這個問題:
mydestination = <....>, mydomain.com
在in末尾添加域名/etc/postfix/main.cf
註解掉這一行:
#mailbox_command = procmail -a "$EXTENSION"
然後從 Gmail 發送電子郵件至
[email protected]
,等待幾秒鐘這樣做
mail
,您將看到新電子郵件:)