我已将 Debian 服务器配置msmtp为用于发送邮件。例如,当前用例是从logwatch我的 isp 电子邮件发送每日报告。
echo "$body" | mutt -s "$topic" -- "myisp@email.com"
我已经msmtp通过msmtprc位于/etc/msmtprc. 内容如下所示。
我要配置的下一件事是我的 root 帐户的电子邮件(例如,从 crontabs 输出)也发送到我的 isp 电子邮件。
我已经搜索并发现,例如在 Arch wiki 上,我应该只配置我的别名。我在 msmtp 配置文件的底部这样做了。
但是,在运行后newaliases,并尝试执行
echo test | mail -s "test message" root
Run Code Online (Sandbox Code Playgroud)
我收到错误
send-mail: /etc/aliases: line 2: invalid address 'postmaster'
Can't send mail: sendmail process failed with error code 78
Run Code Online (Sandbox Code Playgroud)
我不确定如何解决这个问题。下面显示的别名是已经存在的别名。我只添加了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
Run Code Online (Sandbox Code Playgroud)
/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
# ------------------------------------------------------------------------------#
Run Code Online (Sandbox Code Playgroud)
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 认为它无效并死亡。您可以通过将 @ 附加到所有重定向到 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@, christophe.detroyer@gmail.com
Run Code Online (Sandbox Code Playgroud)
我计划记录一个针对 msmtp 的错误/问题以更改此行为,以便它可以正常工作,然后将更新此答案。
小智 6
msmtp今天第一次尝试时发现了两件事。
/etc/aliases违约postmaster: root让事情胃灼热。仅由透露msmtp -v
postmaster: root@somewhere.com放入或aliases /etc/aliases/etc/msmtprc~/.msmtprc