Sendmailが失敗した場合のバウンスメールの生成

Sendmailが失敗した場合のバウンスメールの生成

送信メールがsmtp外部サーバーに到達できない場合(ローカルインターネット接続の問題のため)、返信メールを受信しようとしています。

私は次のように電子メールを送信します:mutt(compose) - procmail - esmtp(sendmailの代わりに) - GMail smtpサーバー

接続が失われてGmail smtpにアクセスできない場合は、電子メールローカルシステムから返送された電子メールに関する通知を受け取る必要があります。

procmailはこの動作を得るための正しい「チェーン接続」設定ですか?バウンスを設定する方法は?

編集する:

.muttrc:

set sendmail="/usr/bin/formail -s /usr/bin/procmail -t -m /home/$myuser/.procmailoutrc"

.procmailoutrc:

MAILCONF=$HOME/.mail
LOGFILE=$MAILCONF/procmailout.log
LOGSENDMAIL=$MAILCONF/esmtp.log 
[...]
:0
* ^From.*address@gmail
{
        :0c:
        address@gmail
        :0
        | formail -I 'From ' | sendmail -v -t -X "$LOGSENDMAIL"
}

esmtprc:

identity address@gmail
        hostname smtp.gmail.com:587
        username "address@gmail"
        password "*"
        starttls required
        helo "*"
mda='/usr/bin/formail -a "Date: `date -R`" | /usr/bin/procmail -d %T'`

次のエラーが見つかったので:

"SMTP server problem Temporary failure in name resolution"

$LOGFILEinの代わりにinを書くと、$LOGSENDMAILprocmailがこの返されたエラーを管理し、私のメールボックスに「配信に失敗しました」というメッセージを送信できると思いました。

私の設定でわかるように、mbox名は実際のEメールアドレスと同じです。

答え1

標準出力はログファイルにリダイレクトされますsendmailが、標準エラーはリダイレクトされないため、Procmailログファイルに残ります。

私はこれがsendmail適切な終了コードを設定し、必要に応じて失敗したときにローカルバウンスメッセージを生成できると想像しています。

これは別のスクリプトを生成するのに十分複雑です。できるおそらく何とかあなたのインラインです.procmailout

#!/bin/sh
t=$(mktemp -t sendout.XXXXXXXXXXXX) || exit
trap 'rm -f "$t"' EXIT
trap 'exit 123' HUP INT TERM
formail -I "From " >"$t"
sendmail -v -t -X "$@" <"$t" && exit

# If we reached here, it's a failure
rc=$?
( printf "To: $USER\nFrom: MAILER_DAEMON\nSubject: Bounce\n\n"
  printf "The following message failed to send.  So sorry.\n\n"
  cat "$t" ) | sendmail -oi -t
exit $rc

sendoutこのスクリプトを場所の1つに送信しPATH(Procmailにもあることを確認してPATH)、次のように呼び出すことができます。

:0
| sendout "$LOGSENDMAIL"

メッセージがすぐに配信できない状況では、Stock Sendmailの一般的なパターンはメッセージをキューに入れ、数時間後に一時的な失敗を報告してから1週間経過するまで再試行し、まだ配信できない場合はメッセージを配信できません。として返すことです。私はそれに慣れていませんが、esmtpSendmailの基本的な動作(したがって、いくつかの設定ではPostfix、Eximなど)が好きなようになることができるようです。したがって、おそらくそれらの1つに切り替えます(そうでesmtpない場合)。動作などを構成し、独自のソリューションを作成しないでください。

関連情報