/etc/aliases

/etc/aliases

我已配置我的 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第一次尝试时发现了两件事。

  1. /etc/aliases违约postmaster: root让事情胃灼热。仅由透露msmtp -v

  2. aliases /etc/aliases/etc/msmtprc~/.msmtprc

答案3

我要配置的下一件事是我的 root 帐户的电子邮件(例如,crontabs 的输出)也发送到我的 isp 电子邮件。

  1. 在 上添加这样一行/etc/msmtprc
   aliases /etc/aliases.msmtp
  1. /etc/aliases.msmtp创建包含此行的文件:
   default: [email protected]

答案4

msmtp 和 AppArmor 不能很好地协同工作。 AppArmor 可以接受 msmtpd 读取,/etc/aliases 但对读取 却犹豫不决/etc/aliases.msmtp

-v我通过使用msmtp 选项并发送测试邮件发现了问题。

我建议坚持/etc/aliases

相关内容