私はこの問題に対処するこの回答を試しました。しかし、私が持っているバージョン(2.11.0)ではメッセージを簡単に変更できないようです。
たとえば、/ var / spool / mqueue dirはありませんが、代わりに/ var / spool / postfix / ...
二つはっきりさせておきたい。
- まず、その回答はsendmailではなくpostfixに適用されました。
- 次に、raw-queue-filesを直接操作することはまったくサポートされていませんでした。
したがって、ここにはいくつかのオプションがあります
1. smtp_generic_mapsパラメータ
この答えは、この優れた答えに触発されました。古いアドレスを新しいアドレスに自動的に書き換えます。old-addressをnew-addressにマップするファイルを定義できます。
/etc/postfix/main.cf:
smtp_generic_maps = hash:/etc/postfix/generic
/etc/postfix/generic:
account@localdomain.example.com account@example.com
postmap /etc/postfix/generic
実行することを忘れないでくださいpostfix reload
- メリット:メッセージをキューに再登録する必要はありません
- 欠点: Postfixは、一致する送信者と受信者のアドレスを書き換えます
account@localdomain.example.com
。
2. sender_canonical_address
最初のオプションの欠点を克服するには、を使用できますsender_canonical_maps
。この解決策はPostfixの作者の提案に基づいています。最初のオプションと同じように、ファイルを定義してold-addressをnew-addressにマップできます。
/etc/postfix/main.cf:
sender_canonical_maps = hash:/etc/postfix/sender_canonical
/etc/postfix/sender_canonical:
account@localdomain.example.com account@example.com
実行してpostmap /etc/postfix/sender_canonical
から実行しpostfix reload
ます。postfixキューのフローにより、影響を受けるキューをコマンドで再キューイングする必要がありますpostsuper -r queueid
- メリット: Postfixが受信者アドレスを書き換えない。
- 欠点:影響を受けるすべてのメッセージを再キューイングする必要があります。しかし、単一のコマンドで延期されたすべてを再キューイングできます
postsuper -r ALL deferred
3. postfixキューの直接操作
これは、高度な処理のためにキューを変更する手動の古い方法です。この回答はpostfix-usersメーリングリストからのものです
要するに
上記のコマンドのドキュメントについては、このページを参照してください
注:postfix-usersメーリングリスト
からの元のソリューション。キューの抽出に使用します。このコマンドは、キューのヘッダー、本文、メタ情報を抽出します。下記のAzendaleで指摘したように、はメタ情報のため、この不正な形式の電子メールの送信を拒否します。postcat -q queueid >tempfile
sendmail
-bh
パラメーターに加えてパラメーターを使用するq
と、postcatフィルターはヘッダーと本文のみへの出力をフィルターし、メタ情報は含みません。これの副次的な利点は、一時ファイルがほとんどの電子メールクライアントが.eml形式として認識する形式であるため、結果の(編集された)メッセージを表示できることです。
postcat -qbh queueid >tempfile
。(副次的な利点:.eml形式です。)ちょうど使用-q
しただけでは、sendmailを実行しても何も実行されないように見えました。Postfixバージョン2.8.4。誰かがこれを確認できますか?もしそうなら、この答えを編集しましょう。