web-dev-qa-db-ja.com

Msmtpは `/ etc / aliases`を理解していません

メールの送信にmsmtpを使用するようにDebianサーバーを設定しました。現在の使用例は、たとえば、logwatchからISPの電子メールに日次レポートを送信することです。

echo "$body" | mutt -s "$topic" -- "[email protected]"

/etc/msmtprcにあるグローバルmsmtpファイルを使用してmsmtprcを構成しました。以下に示す内容。

次に設定したいのは、rootアカウントの電子メール(crontabからの出力など)が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
# ------------------------------------------------------------------------------#

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() function in 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に対してバグ/問題をログに記録する予定です。これにより、正常に機能し、この回答が更新されます。

6
JoeNahmias

msmtpを初めて試したときに、今日これについて2つのことがわかりました。

  1. /etc/aliasesデフォルトのpostmaster: rootは胸焼けを引き起こしました。 msmtp -vによってのみ明らかにされます

  2. put aliases /etc/aliases in /etc/msmtprcまたは~/.msmtprc

3
Bill

次に設定したいのは、rootアカウントの電子メール(crontabからの出力など)がISPの電子メールにも送信されることです。

  1. /etc/msmtprcに次のような行を追加します。
   aliases /etc/aliases.msmtp
  1. 次の行を含むファイル/etc/aliases.msmtpを作成します。
   default: [email protected]
0
dashohoxha