
たとえば、自分のサーバーにメールを送信してもらい、そのメールをすべて別のメール アドレスに転送したいとします。たとえば、次のようなマッピングがあります。
[email protected] => [email protected]
[email protected] => [email protected]
[email protected] => [email protected]
...
[email protected] => [email protected]
このリストは膨大な数になる可能性があり、すべてを簡単に転送できるようにしたいと考えています。また、ユーザーが自分でマッピングを設定できるように簡単に構成できるようにしたいと考えています (Gmail などで簡単に転送を設定できるのと同じように)。
現在、サーバーに postfix をインストールしていますが、postfix では設定ファイルを編集して常にリロードする必要があり、リストが巨大になるとスケーラブルではないように思えます。
これを実現する最善の方法は何でしょうか? 必ずしも postfix を使用する必要はなく、必要に応じてこの目的に適したまったく異なるシステムを使用することもできます。
答え1
Postfixは多くのルックアップテーブルまた、データベース検索テーブル ( mysql,pgsql or sqlite
) を使用してこのような大きなリストを保存することができ、使用時に postfix をリロードする必要はありません。forwards
postgres データベースに列とをemailaddress
持つテーブルがあるとしますforwards
。
emailaddress forwards
[email protected] [email protected]
[email protected] [email protected]
[email protected] [email protected]
そして、それを使用するように postfix を設定できます。
#/etc/postfix/main.cf
#... other main.cf contents omitted
virtual_alias_domains = myserver.net
virtual_alias_maps = pgsql:/etc/postfix/pgsql_forwards.cf
#...
の内容は/etc/postfix/pgsql_forwards.cf
次のようになります
#/etc/postfix/pgsql_forwards.cf
dbname = emaildb
hosts = db.example.net
user = emailuser
password = somerandompass
query = SELECT forwards FROM forwards where emailaddress='%s';
- しかし、まずは を実行して、すべてのルックアップ テーブルが postfix でコンパイルされていることを確認してください
postconf -m
。 を使用しているケースが多く見受けられますmysql
。 - また、ユーザーが自分で転送を設定できるようにするには、postfix が使用するデータベース テーブルを更新する Web アプリケーションをユーザーに提供する必要があります。
お役に立てれば幸いです。