postfix
我正在嘗試在 Linux 機器上進行設定(帶有 Postfix 2.11 的 Debian 8)。但我在/etc/aliases
正常工作方面遇到了一些麻煩。
設定如下: MS Exchange 伺服器是實際的郵件伺服器 - 它接收郵件和傳送郵件,並且與 Linux 電腦位於同一本機網路中。 Linux 電腦上的 Postfix 確實使用此 Exchange 電腦作為中繼主機來傳送郵件。這有效,所以例如到達。mail [email protected]
現在,在 Exchange 上存在一個轉送到 Linux 電腦的郵件地址。我為此/etc/aliases
有一個別名,它是程式的管道,因為發送到該地址的郵件包含一些應該由程式解析的程式碼。
為了使這項工作正常進行,我必須更改mydestination
中的設定main.cf
。但是一旦我這樣做,Postfix就會在/etc/aliases
使用其別名時停止轉發郵件。僅輸入長名稱即可。這是我的配置(我從零開始):
# main.cf
# our internet domain name (the thing after the "@")
mydomain = example.com
# this is the critical setting
mydestination = linuxmachine, 192.168.1.200, $mydomain
# IP of Exchange
relayhost = 192.168.1.100
# so that addresses look correct
masquerade_domains = $mydomain
# in order to make the pipe programm work with correct permission
default_privs = myuser
使用此配置,傳入郵件的管道工作正常,但將郵件發送到別名不起作用:
# /etc/alias
# none of the entries are actual users on the linux machine!
#works when mail to [email protected] comes from external through Exchange to Linux
parser: |/home/user/programname
# command "mail external" does not work! It sends to external@linuxmachine"
external: [email protected]
如果我註解掉thenmydestination
中的行,則會發送一封郵件到(到達),但傳入的郵件不會透過管道發送。所以,正好相反。main.cf
mail external
[email protected]
[email protected]
我必須輸入什麼main.cf
或/etc/aliases
才能使用短名稱從我的 Linux 機器發送郵件,同時能夠透過管道接收郵件?我想要的只是在 Linux 機器上解析一個特殊的地址,並且 Linux 用戶能夠使用短名稱作為“奢侈品”將郵件發送到選定的地址(而不必輸入完整的電子郵件地址)。
更新:
postconf -n
輸出:
config_directory = /etc/postfix
default_privs = myuser
masquerade_domains = $mydomain
mydestination = linuxmachine, 192.168.1.200, $mydomain
mydomain = example.com
relayhost = 192.168.1.100
更新 2:使用上面的 set/var/log/mail.info
執行mail external
(郵件到別名)時的輸出:mydestination
Jun 19 10:45:27 linuxmachine postfix/smtp[26425]: 6DFE02003AD: to=<[email protected]>, orig_to=<external>, relay=192.168.1.100[192.168.1.100]:25, delay=0.24, delays=0/0/0/0.24, dsn=2.6.0, status=sent (250 2.6.0 <[email protected]> [InternalId=162319] Queued mail for delivery)
更新3,mydestination
根據建議的答案進行更改後,mail.info
日誌在執行時顯示以下行mail external
:
Jun 19 16:07:31 linuxmachine postfix/smtp[2299]: B562720039C: to=<[email protected]>, orig_to=<external>, relay=192.168.1.100[192.168.1.100]:25, delay=2.6, delays=0/0/0/2.5, dsn=2.6.0, status=sent (250 2.6.0 <[email protected]> [InternalId=162971] Queued mail for delivery)
答案1
顯而易見的解決方案是將$myhostname
或 linuxmachine.example.com放入mydestination
參數中。
解釋
在配置修改之前,這裡是您透過以下方式發送電子郵件後的後台事件mail external
- Postfix 透過取件服務接收電子郵件。
- 因為收件者沒有網域部分和(預設)參數
append_at_myorigin
有值yes
,那麼 postfix 會將收件者位址重寫為[電子郵件受保護](你可以在上面的mail.log中看到它) - 預設情況下,參數
mydestination
具有值$myhostname
或 linuxmachine.example.com,因此 postfix 在/etc/aliases
. - 後綴別名[電子郵件受保護]到[電子郵件受保護]然後發送到gmail主機
現在修改配置後,會發生這樣的情況
- Postfix 透過取件服務接收電子郵件。
- 因為收件者沒有網域部分和(預設)參數
append_at_myorigin
有值yes
,那麼 postfix 會將收件者位址重寫為[電子郵件受保護](你可以在上面的mail.log中看到它) - 現在
mydestination
不包含$myhostname
或 linuxmachine.example.com,因此 postfix 不會在中套用別名/etc/aliases