Sendmail

Msmtp 不理解/etc/aliases

  • October 17, 2019

我已將 Debian 伺服器配置msmtp為用於發送郵件。目前的案例是例如從logwatch我的 isp 電子郵件發送每日報告。

echo "$body" | mutt -s "$topic" -- "myisp@email.com"

我已經msmtp通過msmtprc位於的全域文件進行了配置/etc/msmtprc。內容如下圖。

我要配置的下一件事是我的根帳戶的電子郵件(例如,來自 crontabs 的輸出)也發送到我的 isp 電子郵件。

我四處搜尋並發現,例如在 Arch wiki 上,我應該只配置我的別名。我在 msmtp 配置文件的底部這樣做了。

但是,在執行後newaliases,並嘗試執行

echo test | mail -s "test message" root

我得到錯誤

send-mail: /etc/aliases: line 2: invalid address 'postmaster'
Can't send mail: sendmail process failed with error code 78

我不確定如何解決這個問題。下面顯示的別名是已經存在的。我只添加了gmail地址。

我想我可以只放一個新的別名文件,但這可能會破壞依賴於此的其他服務。即,我不知道解決此問題的正確方法是什麼。

/etc/aliases

# /etc/aliases
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
root: christphe, christophe.detroyer@gmail.com

/etc/msmtprc

# ------------------------------------------------------------------------------
# msmtp System Wide Configuration file
# ------------------------------------------------------------------------------

# A system wide configuration is optional.
# If it exists, it usually defines a default account.
# This allows msmtp to be used like /usr/sbin/sendmail.

# ------------------------------------------------------------------------------
# Accounts
# ------------------------------------------------------------------------------

account isp
host mail.isp.net
port 587
from admin@isp.com
auth login
user admin@isp.com
password foobar
syslog LOG_MAIL

logfile /var/log/msmtp.log

# ------------------------------------------------------------------------------
# Configurations
# ------------------------------------------------------------------------------

# Construct envelope-from addresses of the form "user@oursite.example".
#auto_from on
#maildomain fermmy.server

# Use TLS.
tls on
tls_starttls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt

# Syslog logging with facility LOG_MAIL instead of the default LOG_USER.
# Must be done within "account" sub-section above
#syslog LOG_MAIL

# Set a default account
account default : isp

aliases /etc/aliases
# ------------------------------------------------------------------------------#

2019-10-17 更新

msmtp 版本 1.8.6(2019 年 9 月 27 日發布)現在在/etc/aliases. 請參閱https://marlam.de/msmtp/news/msmtp-1-8-6/

原始答案

所以,當我從 ssmtp 遷移到 msmtp 時,我遇到了完全相同的問題。該問題是由is_address()aliases.c 中的函式引起的。基本上,如果別名的目標不包含'@',則 msmtp 認為它無效並死亡。您可以通過將 @ 附加到重定向到根目錄的所有別名來解決此問題。

在您的範例中,您將修改/etc/aliases如下:

# /etc/aliases
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@
root: christphe@, christophe.detroyer@gmail.com

我計劃針對 msmtp 記錄錯誤/問題以更改此行為,以便它正常工作並隨後更新此答案。

引用自:https://unix.stackexchange.com/questions/318484