
我已配置我的 Debian 伺服器用於msmtp
發送郵件。例如,目前的用例是將每日報告發送logwatch
到我的 ISP 電子郵件。
echo "$body" | mutt -s "$topic" -- "[email protected]"
我已經msmtp
透過msmtprc
位於 的全域檔案進行了配置/etc/msmtprc
。內容如下圖所示。
我要設定的下一件事是我的 root 帳號的電子郵件(例如,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, [email protected]
/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 [email protected]
auth login
user [email protected]
password foobar
syslog LOG_MAIL
logfile /var/log/msmtp.log
# ------------------------------------------------------------------------------
# Configurations
# ------------------------------------------------------------------------------
# Construct envelope-from addresses of the form "[email protected]".
#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
# ------------------------------------------------------------------------------#
答案1
更新2019-10-17
msmtp 版本 1.8.6(2019-09-27 發布)現在原生支援/etc/aliases
.看https://marlam.de/msmtp/news/msmtp-1-8-6/。
原答案
因此,當我從 ssmtp 遷移到 msmtp 時,我遇到了完全相同的問題。該問題是由is_address()
aliases.c 中的函數。基本上,如果別名的目標不包含'@'
,msmtp 會認為它無效並終止。您可以透過將 @ 附加到重定向到 root 的所有別名來解決此問題。
在您的範例中,您將修改/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@, [email protected]
我計劃針對 msmtp 記錄一個錯誤/問題,以更改此行為,以便它正常工作,然後更新此答案。
答案2
今天msmtp
第一次嘗試時發現了兩件事。
/etc/aliases
違約postmaster: root
讓事情胃灼熱。僅由透露msmtp -v
- 透過將行更改為解決
postmaster: [email protected]
- 透過將行更改為解決
放
aliases /etc/aliases
在/etc/msmtprc
或~/.msmtprc
答案3
我要設定的下一件事是我的 root 帳戶的電子郵件(例如,crontabs 的輸出)也傳送到我的 isp 電子郵件。
- 在 上新增這樣一行
/etc/msmtprc
:
aliases /etc/aliases.msmtp
/etc/aliases.msmtp
建立包含此行的文件:
default: [email protected]
答案4
msmtp 和 AppArmor 不能很好地協同工作。 AppArmor 可以接受 msmtpd 讀取,/etc/aliases
但對讀取 卻猶豫不決/etc/aliases.msmtp
。
-v
我透過使用msmtp 選項並發送測試郵件發現了問題。
我建議堅持/etc/aliases
。