Linux

獲取postfix轉發root的郵件

  • September 25, 2020

我有一個執行 postfix 的 Ubuntu 伺服器。它不是我域的郵件伺服器。

每當為 root 執行 cron 作業時,輸出郵件不會在本地傳遞,而是通過主郵件伺服器發送到 root@mydomain.com。這不是我想要的。

我希望 root 的郵件要麼在本地發送,要麼轉發到 anothermail@anotherdomain.com

我已經嘗試修改~root/.forward/etc/aliases(並執行新別名),但沒有任何幫助(我猜這些文件僅在 postfix 嘗試在本地傳遞郵件時檢查)。

我能做些什麼?

這是/etc/postfix/main.cf

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
append_dot_mydomain = no
readme_directory = no
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
myhostname = linux1.mydomain.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = linux1.mydomain.com, localhost.linux1.mydomain.com, localhost
relayhost = my.isps.relayhost.com
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = loopback-only

編輯:

向 root 發送郵件時,會進入/var/log/mail.log

Mar  7 09:39:17 linux1 postfix/pickup[31381]: F3B9C98025E: uid=1000 from=<ct>
Mar  7 09:39:18 linux1 postfix/cleanup[31556]: F3B9C98025E: message-id=<20130307083917.F3B9C98025E@linux1.mydomain.com>
Mar  7 09:39:18 linux1 postfix/qmgr[28525]: F3B9C98025E: from=<ct@mydomain.com>, size=283, nrcpt=1 (queue active)
Mar  7 09:39:18 linux1 postfix/smtp[31558]: F3B9C98025E: to=<root@mydomain.com>, orig_to=<root>, relay=my.isps.relayhost.com[<IP address omitted>]:25, delay=0.72, delays=0.19/0.02/0.27/0.25, dsn=2.0.0, status=sent (250 Ok: queued as A97F5D8126)
Mar  7 09:39:18 linux1 postfix/qmgr[28525]: F3B9C98025E: removed

名稱“ct”是我的使用者名。我通過這個命令生成了上面的文本:

echo test | mail -s test root

的內容/etc/mailname是:

mydomain.com

的內容/etc/aliases是:

root: anothermail@anotherdomain.com
postmaster:    root

anothermail@anotherdomain.com 是我希望將 root 的郵件轉發到的位置。

的內容/etc/hosts其實讓我有點吃驚:

127.0.0.1 localhost
127.0.1.1 linux1.mylinux.mydomain.com linux1

其中“mylinux”是 linux1 作為虛擬機執行的主機作業系統的主機名。我不確定“mylinux”是如何進入那裡的。(但這真的是我問題的原因嗎?)

像往常一樣,檢查您的日誌。

在您的情況下,後綴守護程序認為郵件不適合它並在不使用的情況下發送它/etc/aliases

首先檢查您的/etc/hosts文件:它應該有您的機器名稱對應於127.0.1.1,如下所示:

127.0.1.1  linux1.mydomain.com  linux1

檢查你的/etc/mailname,它應該是一致的。

檢查您/etc/aliases是否將root(使用者)發送給另一個使用者,然後重做newaliases命令。

它應該工作!

如果mydestination為空或不包含$myhostname則將/etc/aliases被忽略,因為 postfix 認為電子郵件不是本地傳遞,因此不會應用本地別名。因此,保留mydestination預設值(postconf -d mydestination或從中刪除main.cf),日誌應顯示to=<...>為您的別名地址。

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