Postfix 發送到 FQDN 主機名而不是域名
我已經安裝了只發送後綴。當我向完整的電子郵件地址發送郵件時,Postfix 有效。但是,如果要向使用者發送郵件,它會將 FQDN 名稱添加為副檔名,而不僅僅是我在安裝過程中設置的域名。
例如,當我像這樣從 ssh 發送郵件時:
echo "This will go into the body of the mail." | mail -s "Hello world" root
我想要郵件去
root@example.com.au
。但是電子郵件被發送到root@host.example.com.au
.我已經查看了我的主機設置、郵件名設置、後綴設置,但我不知道為什麼它不斷向其中添加完整的主機名,這顯然會被退回。這是我的配置文件:
後綴 main.cf:
# Debian specific: Specifying a file name will cause the first # line of that file to be used as the name. The Debian default # is /etc/mailname. #myorigin = /etc/mailname smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU) biff = no # appending .domain is the MUA's job. append_dot_mydomain = no # Uncomment the next line to generate "delayed mail" warnings #delay_warning_time = 4h readme_directory = no # TLS parameters smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key smtpd_use_tls=yes smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache # See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for # information on enabling SSL in the smtp client. myhostname = host.example.com.au alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases myorigin = /etc/mailname mydestination = relayhost = mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = loopback-only virtual_alias_maps = hash:/etc/postfix/virtual
別名:
mailer-daemon: postmaster postmaster: root nobody: root hostmaster: root usenet: root news: root webmaster: root www: root ftp: root abuse: root noc: root security: root
/etc/postfix/虛擬:
root admin@example.com.au
/etc/郵件名:
example.com.au
/etc/主機:
127.0.0.1 localhost 11x.0.0.xxx host.example.com.au host
/etc/主機名
host
我已經審查了所有內容,但我不知道為什麼郵件發送到
@host.example.com.au
. 有人可以幫我嗎?我在Debian 8上。
編輯: 剛才,我嘗試在 main.cf 文件中再添加一項設置:
masquerade_domains = $mydomain
. 添加這個似乎修復了from
地址以顯示我的域名而不是主機名,但是to
地址仍然具有 FQDN 名稱。我在我的電子郵件地址上收到退回的電子郵件“郵件傳遞系統”通知,因為原始電子郵件現在是在添加之後masquerade_domains
,但我仍然無法理解為什麼使用者電子郵件不尊重相同並且to
地址仍然被定址為root@host.example.com.au
而不是root@example.com.au
.myhostname = host.example.com.au mydomain = example.com.au alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases myorigin = $mydomain masquerade_domains = $mydomain mydestination = relayhost = mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
終於讓它工作了。這些是我為解決問題而採取的步驟:
1)我的目的地:
因為我有一個只發送郵件伺服器,所以根據 postfix 手冊頁,我將文件留空
mydestination
。main.cf
但是,這樣做最終會出現上述行為,即發送的本地電子郵件附加了主機名,而主機名卻被退回了。因此我添加了,$hostname
就像localhost
這樣:mydestination``main.cf
mydestination = $myhostname, localhost
2)別名:
接下來,我添加了 root 使用者的電子郵件地址,
/etc/aliases
如下所示:root: root@example.com.au
3) 新別名:
最後,我重建別名並重新載入後綴
sudo newaliases sudo service postfix reload
什麼解決了它:
由於別名僅用於本地傳遞並且我沒有本地傳遞(意味著 $mydestination 為空),因此在別名中使用根電子郵件地址沒有任何區別。現在,在添加
$hostname
到我的目的地之後,任何發送給使用者的電子郵件$hostname
都會被接收,因為$mydestination
這指的是aliases
最終告訴 postfix 將該電子郵件發送到另一個電子郵件地址。我仍然不明白的是,為什麼後綴一開始就忽略了
$domainname
asmyorigin
並不斷向使用者添加hostname
後綴仍然是個謎。hostname
但是,當 postfix 堅持添加到所有直接發送給使用者的郵件中時,上述方法似乎是解決方案。希望這可以幫助!
您需要
root
在/etc/aliases
文件中添加一個別名,如下所示,然後執行newaliases
它應該可以工作。root: admin@example.com.au
我已經對其進行了測試,並且可以正常工作。