Debian

Postfix 發送到 FQDN 主機名而不是域名

  • January 8, 2016

我已經安裝了只發送後綴。當我向完整的電子郵件地址發送郵件時,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 手冊頁,我將文件留空mydestinationmain.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 將該電子郵件發送到另一個電子郵件地址。

我仍然不明白的是,為什麼後綴一開始就忽略了$domainnameasmyorigin並不斷向使用者添加hostname後綴仍然是個謎。hostname但是,當 postfix 堅持添加到所有直接發送給使用者的郵件中時,上述方法似乎是解決方案。

希望這可以幫助!

您需要root/etc/aliases文件中添加一個別名,如下所示,然後執行newaliases它應該可以工作。

root: admin@example.com.au

我已經對其進行了測試,並且可以正常工作。

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