私はPostfix、Procmail、Cyrus-IMAPで主に構成されるメールサーバーのペアを持っていますが、どちらも正常に動作します。 IMAPサーバーは、単純なマスター/レプリカのペアで構成されます。すべての「通常の」メールは、マスターのPostfixによって受け入れられます。マスターのPostfixは、同じサーバーで実行されているCyrus-IMAPに配信するためにProcmailを介して処理します。どちらのサーバーもこのように実行できますが、実際に外部の電子メールを受信するのはマスターだけです。
現在、どちらのボックスのローカルアカウントも、同じボックスのCyrus-IMAPにローカルに配信されるローカルPostfixを介してメール(たとえば、cronジョブによって生成された)を送信します。
ただし、Cyrusのレプリケーションは、レプリカで直接発生する変更を好まないため、レプリカがローカルメールを配信してマスターに配信することをお勧めします。
これを達成する方法は2つあります。
または
レプリカサーバーがすべてをマスターサーバー(つまり、内部と外部の両方の電子メール)に中継する3番目の方法がありますが、それはやや不必要に思えます。外部メールの処理方法を変更する必要はありません。どちらのボックスでも、ローカルのPostfixを介して外部メールを送信し、外部に中継することができます。
私が本当にやりたいのは、レプリカで内部メールを処理する方法を変更して、マスターに、PostfixまたはそこのIMAPサーバーに配信するようにすることです。
Postfixのmaster.cfでのローカルトランスポートの既存の機能する設定:
procmail-local unix - n n - - pipe
flags=OR user=cyrus argv=/usr/bin/procmail -t -m RECIPIENT=${mailbox}
SENDER=${sender} EXTENSION=${extension} /etc/procmailrc
ProcmailrcでのCyrusへの配信の既存の機能する構成:
DELIVERMAIL="/usr/lib/cyrus/bin/deliver -r $SENDER -a $RECIPIENT $RECIPIENT
まだ先にやります-mydestination
からドメイン名を削除すると、そのドメインのメールは、ドメインのMXとしてリストされているサーバーに配信されます。 MXを使用するのではなく、サーバーを指定する場合は、/path/to/postfix/etc/transport
ファイルを使用する必要があります。そのファイルは次のようになります。
# all mails to our own domain should go to our main incoming server
ourdomain.com smtp:[mainserver.ourdomain.com]
[]
マークは重要です。これらがなくても、サーバーはmainserver.ourdomain.comのMXレコードを引き続き検索します。
ファイルを編集した後、コマンドpostmap /path/to/postfix/etc/transport
を使用します
また、次の行で/path/to/postfix/etc/main.cf
を編集して、postfixがそのファイルを使用することを認識していることを確認する必要があります。
transport_maps = hash:/path/to/postfix/etc/transport
システムがdbファイルを使用する場合。代わりにdbmファイルを使用する場合、行は
transport_maps = dbm:/path/to/postfix/etc/transport
設定は次のとおりです。
$ grep domain.com /etc/postfix/*
/etc/postfix/main.cf:relay_domains = domain.com
/etc/postfix/relay_recipients:"@domain.com OK"
Binary file /etc/postfix/relay_recipients.db matches
/etc/postfix/transport:domain.com smtp:[ip.address.of.the.mail.server]
Binary file /etc/postfix/transport.db matches
また、忘れないでください:
$ postmap /etc/postfix/transport
$ postmap /etc/postfix/relay_recipients
$ /etc/init.d/postfix restart
(CentOS、RedHat)
Main.cfに配置したレプリカでtransport_mapsを使用してみることができます
transport_maps = hash:/etc/postfix/transport
次に、/ etc/postfix/transportに配置します
localdomain smtp:yourmasterserver
次のことを忘れないでください。
postmap /etc/postfix/transport
そしてpostfixを再起動します