私は、smtpd から入ってくるメールが spamassassin によって自動的にフィルタリングされるように postfix を設定しました (これにより、ヘッダーが追加されたメールがメールキューに再挿入されます)
ここで、スパムとみなされるメッセージに対して 2 つのことを行いたいと思います。
- メールが再度送信される場合(エイリアスのため)、その場でメールを破棄する
- メールがローカル仮想ユーザー宛ての場合、メールは Dovecot に渡され、スパム フォルダーに配置されます。
このように postfix を設定できますか? すべてのエイリアスとユーザー情報は MySQL にあります。現在はすべてのスパム メールを破棄していますが (main.cf の header_checks を使用)、上記の状況の方が望ましいです。
答え1
送信メールを処理するために、master.cf に別の SMTP リスナー プロセスを設定できます。次のようなコマンドで、ポート 26 でリッスンするプロセスを開始できます。
26 inet n - n - 18 smtpd -o header_checks=[your checks] mydestination= relayhost=
ローカル配信を無効にし、ローカルホスト以外からのメールを受け付けないようにするには、少し調整する必要があるかもしれません。次に、main.cf に次の内容を追加します。
relayhost=127.0.0.1:26
もちろん、そのファイルからヘッダーチェックを削除します。
メール送信は 26 の 2 番目の smtpd プロセスに中継され、スパムとして失敗したメッセージはドロップされます。メールを直接配信するのではなく、ダウンストリーム サーバーに渡す必要がある場合は、そのリスナーでリレーホストを指定することもできます。
次に、すでに提案したように、Dovecot を使用してローカル ユーザー向けの残りのフィルタリングを設定します。
もちろん、これを行う際には、メッセージにメールホップをいくつ追加するかを考慮する必要があります。一部のメールプロバイダでは、かなりの数のホップでメッセージがドロップされるからです(たとえば、Gmailは10または15程度でドロップされます)。