Postfix + SpamAssassin:受信メールヘッダーの変更

Postfix + SpamAssassin:受信メールヘッダーの変更

このタイプのOS設定について、ほとんどのWebサイトが推奨する指示に従ってPostfix + SpamAssassin設定を実行しました。基本的に私は次のものを追加master.cfするために私を編集しました。

smtp      inet  n       -       -       -       -       smtpd -o content_filter=spamassassin

spamassassin unix -     n       n       -       -       pipe
        user=debian-spamd argv=/usr/bin/spamc -f -e  
        /usr/sbin/sendmail -oi -f ${sender} ${recipient}

SpamAssassinは実際にうまく機能し、電子メールはフィルタリングされていますが、次のことがわかりました。過去に SpamAssassin 以前は、メールが私のサーバーに送信された場合、ヘッダーに次の内容が表示されました。

Return-path: <[email protected]>
Envelope-to: <[email protected]>
Delivery-date: Wed, 02 Dec 2015 12:37:13 +0100
Received: from mail.sender-server.dev ...
    by mail.my-server.dev

SpamAssassinの後には、次のものが表示されます。

Return-path: <[email protected]>
Envelope-to: <[email protected]>
Delivery-date: Wed, 02 Dec 2015 12:37:13 +0100
Received: from mail.my-server.dev ...
    by mail.my-server.dev

Received: fromSpamAssassinを有効にした後、電子メールが実際に自分のサーバーに到達する元のサーバーが変更されたようです。なぜこれが起こるのですか?正しいヘッダーを表示して電子メールをフィルタリングすると、この問題を解決できませんか?ありがとうございます。

答え1

これは@tarlebの調査と助けを受けた後の最終的な解決策です。

私のメール配信は、sendmail私のメールに追加のヘッダーを追加するプログラムを介して行われます。 Mitter(メールフィルタ)を使用すると、着信メールをフィルタリングできて放棄しましたが、sendmail配送をDovecot LDAに変更することにしました。

私の元のフィルタはPostfixの先頭にありましたmaster.cf

smtp      inet  n       -       -       -       -       smtpd -o content_filter=spamassassin

そしてファイルの終わりから:

spamassassin unix -     n       n       -       -       pipe
        user=debian-spamd argv=/usr/bin/spamc -f -e  
        /usr/sbin/sendmail -oi -f ${sender} ${recipient}

Dovecotローカル配信を使用するようにファイルの末尾を変更しました。

spamassassin unix -     n   n   -   -   pipe
    flags=DROhu user=vmail:vmail argv=/usr/bin/spamc -f -e 
    /usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop} 

ここでPostfixを編集し、main.cf以下を追加します(オプション、下記(3)を確認)。

spamassassin_destination_recipient_limit = 1

今、あなたの電子メールはヘッダーを変更せずにDovecot LDAを介して送信されます。気になる方のために、私の設定に関するいくつかの詳細をお知らせします。

  1. これ構成は、アドレッシング/サブアドレッシング/レシーバー区切り文字で使用できます。(次に送信された電子メールは受信トレイに[email protected]送信されます[email protected]。) - したがって、このアイテムを追加すると、ドメインの前のすべてのコンテンツと一緒に-d ${user}@${nexthop}削除されます。この機能を+有効にするにはrecipient_delimiter = +main.cf
  2. 私のフラグflags=DROhuは例外を追加しませんが、ここで理解できます。http://www.postfix.org/pipe.8.html;
  3. spamassassin_destination_recipient_limit = 1各受信者が spamassassin によって個別に処理されるようにする必要があります。これはD上記のフラグ(ヘッダーを含む)のために必要ですX-Original-Toこのフラグがありますが、複数の宛先をD設定しないと、spamassassin_destination_recipient_limit = 1電子メールは送信されません!このヘッダーに興味がない場合は、フラグを削除できますが、必須ではありません。

編集:ボーナスコンテンツ - スパムをJunkフォルダに移動します!

Junkスパムとして検出された電子メールをIMAPフォルダに移動するようにDovecotを設定することもできます。これは間違いなくあなたの人生をより簡単にします。次の手順に従ってください。

  1. フォルダの編集/etc/dovecot/conf.d/15-mailboxes.confとコメントの解除/追加(近いセクションJunkにある必要があります):namespace inboxmailbox Trash

    mailbox Junk {
       special_use = \Junk
    }
    
  2. インストール:dovecot-sieveapt-get install dovecot-sieve

  3. 次の行を編集し/etc/dovecot/conf.d/90-sieve.confてコメントを追加します。#sieve = ~/.dovecot.sieve

  4. 次に修正されました/etc/dovecot/conf.d/90-plugin.conf:

    plugin {
        sieve = /etc/dovecot/sieve/default.sieve
    }
    
  5. 編集/etc/dovecot/conf.d/15-lda.conf/etc/dovecot/conf.d/20-lmtp.conf一致:

    protocol lda/lmtp { # do not copy/paste this line!
      mail_plugins = $mail_plugins sieve
    }
    

    警告する:選択項目に異なる設定がある可能性があるため、そのprotocolままにしてください。protocol lda/lmtpファイルの行が変更され、元の内容が保持されます。

  6. フォルダの作成/etc/dovecot/sieve/

  7. /etc/dovecot/sieve/default.sieve次の内容でファイルを作成します。

    require "fileinto";
    if header :contains "X-Spam-Flag" "YES" {
        fileinto "Junk";
    }
    
  8. フォルダのアクセス許可を仮想メールユーザーとグループに変更します(例:)chown vmail:vmail /etc/dovecot/sieve/ -R。この鳩を逃すと文句を言うでしょう!

  9. すべてを再起動します。service postfix restart; service dovecot restart; service spamassassin restart

  10. (外部サーバーから)サーバーのEメールアドレスに最初に通常のEメールを送信し、次にタイトルが..である別のEメールを送信しますXJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X。 2番目のEメールはJunkフォルダに入り、最初のEメールは受信トレイに入る必要があります。

最初の試みでうまくいかない場合は、ログを確認してtail -f /var/log/mail.log実行中に電子メールを送信してください。tail良い作業設定は、またはをstored mail into mailbox 'INBOX'報告する必要がありますstored mail into mailbox 'Junk'

答え2

これは、SMTP サーバーがメールを処理する方法の直接的な結果です。メールを処理するすべてのサーバーは、Receivedメールを処理するときに新しいヘッダーを追加します(SMTPサーバーが要求するように)。RFC 2821)。

これがあなたが見るものです。これスパム暗殺者このサービスはフィルタとして機能し、postfixからメールを受信し、結果をpostfixに返します。したがって、Postfixは電子メールを2回受信します。Received毎回ヘッダーを挿入します。そのため、そこに自分のサーバーがリストされているのがわかります。ヘッダは、(Postfix, from userid 120)ユーザIDがdebian-spamdユーザに属する場所と同様のコンテンツを含むことができる。

残りのメッセージヘッダーを調べると、Received以下にヘッダーが多いことがわかります。これで、古いヘッダーはより隠されていますが、まだ残ります。情報は失われません。

関連情報