これらの要件を満たすためにPostfixをどのように設定する必要がありますか?

これらの要件を満たすためにPostfixをどのように設定する必要がありますか?

コンテナ内で実行されるPostfixインスタンスの特定のPostfix設定を作成する方法を特定するのが困難です。

これは私の要件です。

  1. 送信者が小さなIPアドレスセットの1つから来た場合、または送信者がローカルプログラムでない限り、中継は禁止されます(たとえコンテナ外のプログラムがコンテナで実行されているPostfixへのメールをキューに追加できるようにする方法は興味深いパズルです。です)。
  2. 小さなチェックセットを介してリレーではなくIPアドレスから着信する各メッセージを実行し、すべてが通過できない場合は転送を拒否します。
    1. 送信者IPが指定されたRBLにある場合は拒否されます。
    2. 着信IPのグレーリスト中に以前にメールを受信したことはありません。
    3. 宛先アドレスのユーザー部分が小さい正規表現セットと一致しない場合は、それを拒否します。
    4. メッセージが Spamassassin の簡単で迅速な検査に合格しない場合は、拒否してください。
  3. すべてのローカル配送の場合は、最終処理を決定する手順に従ってください。このプログラムは4つの結果のうちの1つを生成します。
    1. 別のローカルアドレスに出荷します(配送先はループ保護を提供するように更新され、ローカル配送プログラムは再実行されます)。
    2. リモートアドレス(Gmailアカウントやその他のアドレスなど)に転送します。
    3. 特定のユーザー(現在は常に同じユーザー)が所有するローカルMaildirディレクトリに送信します。

1つのドメインに送信されたメールを処理するだけです。いつか、すべてのメールがMailmanによって処理される新しいドメインを追加したいのですが、配信前に存在しないリストアドレスから送信されたメールを拒否するのも良いでしょう。

これらの目標の1つ以上を達成する方法を指定する文書へのポインタはありますか?ローカルおよび輸送用Postfixマニュアルはあまりにもあいまいで、実際には役に立ちません。システムのメールフローとさまざまなポイントでこれを変更する方法を詳しく説明するドキュメントがあればよいでしょう。

また、Maildirメールボックスに送信するプログラムを直接書くことはできますが、正確に正しく実行するのは非常に面倒です。

Postfixはコンテナで実行されます。 queueディレクトリとMaildirディレクトリは、コンテナ内にマウントされた永続ファイルシステムです。私は前述のこと(postgrey、spamasassin、ローカルメールの処理方法を決定すること)を実装するために必要なすべてのプログラムも同じコンテナで実行されると思います。 postgrey と spamassassin が維持する状態がコンテナ呼び出し全体にわたって持続するように準備する必要があるかもしれません。

メールを読むにはmuttを使います。現時点では、ローカルでメールを配信する唯一の人になります。ただし、メールを配信するためのさまざまなMaildirディレクトリがあります。これを行うには、おそらく同じシステム(おそらく別のコンテナにコンテナ化されている)でDovecotを実行します。

また、ローカルの受信者アドレスが何百ものあり、ほとんどを同じように処理したいと思います。それらはすべてパターンに適合しますが、パターンに合う一部の人々は他の人とは異なる方法で扱われるべきです。電子メールの内容を参照することなく、どのコンテンツが含まれているかを事前に知ることができ、その内容についてより具体的なパターンを作成できます。

ベストアンサー1

smtpd_client_restrictions次のセクションでは、多くのプロジェクトを扱うことができます。サフィックス構成パラメーター

私のクライアントの制限は次のとおりです。

smtpd_client_restrictions = permit_mynetworks 
                            permit_sasl_authenticated
                            check_helo_access 
                            hash:/etc/postfix/helo_access
                            check_client_access 
                            hash:/etc/postfix/client_checks 
                            reject_unauth_destination
                            check_policy_service unix:private/policy-spf
                            reject_rbl_client cbl.abuseat.org
                            reject_rbl_client pbl.spamhaus.org
                            reject_rbl_client sbl.spamhaus.org
                            reject_rbl_client bl.blocklist.de
                            reject_unknown_client

この設定は着信スパムの約99%を削除します。リストはソートされたリストです。各検査は次の検査まで無視されます。失敗した場合、メッセージは拒否されます。私はclient_checksdbファイルに含まれているルールにいくつかの例外を生成する必要があることを発見しました。

例外ファイルは次のとおりです。

cat /etc/postfix/client_checks

ip.address.123.456     OK
ip.address.789.123     REJECT

postmapプレーンテキスト列形式のファイルを作成したら、そのファイルをデータベースファイルに出力するようにコマンドを実行する必要があります。

postmap /etc/postfix/client_checks

受信者が 1 人または 2 人のシステムでは、エイリアスを介して転送ルールを設定するのは非常に簡単です。

man aliases
man postaliases

ファイル形式とプロセスはほぼ同じです。エイリアス名を 1 行ずつ入力し、コマンドを実行してpostaliasesデータベースを作成します。

より複雑なエイリアスの場合、正規表現をエイリアステーブルに含めることができます。

man regexp_table
...
EXAMPLE SMTPD ACCESS MAP
   # Disallow sender-specified routing. This is a must if you relay mail
   # for other domains.
   /[%!@].*[%!@]/       550 Sender-specified routing rejected

   # Postmaster is OK, that way they can talk to us about how to fix
   # their problem.
   /^postmaster@/       OK

   # Protect your outgoing majordomo exploders
   if !/^owner-/
   /^(.*)-outgoing@(.*)$/  550 Use ${1}@${2} instead
   endif

おすすめ記事