
Debian サーバーをmsmtp
メール送信用に構成しました。現在の使用例は、たとえばlogwatch
ISP メールに毎日のレポートを送信することです。
echo "$body" | mutt -s "$topic" -- "[email protected]"
にあるmsmtp
グローバル ファイルを使用して設定しました。内容を以下に示します。msmtprc
/etc/msmtprc
次に設定したいのは、ルート アカウントの電子メール (例: crontab からの出力) が ISP の電子メールにも送信されるようにすることです。
Google でいろいろ調べたところ、たとえば 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 はそれを無効とみなして終了します。ルートにリダイレクトするすべてのエイリアスに @ を追加するだけで、これを回避できます。
この例では、次のように変更します/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
初めて試してみたところ、2 つのことが分かりました。
/etc/aliases
デフォルトのpostmaster: root
胸焼けを与えた。によってのみ明らかにされたmsmtp -v
- 行を次のように変更することで解決しました
postmaster: [email protected]
- 行を次のように変更することで解決しました
置く
aliases /etc/aliases
または/etc/msmtprc
~/.msmtprc
答え3
次に設定したいのは、ルート アカウントの電子メール (例: crontab からの出力) が 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
。