web-dev-qa-db-ja.com

ローカルメールを別のローカルサーバーに送信するようにpostfixを構成する方法は?

私はPostfix、Procmail、Cyrus-IMAPで主に構成されるメールサーバーのペアを持っていますが、どちらも正常に動作します。 IMAPサーバーは、単純なマスター/レプリカのペアで構成されます。すべての「通常の」メールは、マスターのPostfixによって受け入れられます。マスターのPostfixは、同じサーバーで実行されているCyrus-IMAPに配信するためにProcmailを介して処理します。どちらのサーバーもこのように実行できますが、実際に外部の電子メールを受信するのはマスターだけです。

現在、どちらのボックスのローカルアカウントも、同じボックスのCyrus-IMAPにローカルに配信されるローカルPostfixを介してメール(たとえば、cronジョブによって生成された)を送信します。

ただし、Cyrusのレプリケーションは、レプリカで直接発生する変更を好まないため、レプリカがローカルメールを配信してマスターに配信することをお勧めします。

これを達成する方法は2つあります。

  • レプリカのローカルトランスポートを変更して、マスターサーバー上のPostfixにメールを配信します

または

  • レプリカのprocmailを変更して、マスターサーバー上のCyrus-IMAPにメールを配信します。

レプリカサーバーがすべてをマスターサーバー(つまり、内部と外部の両方の電子メール)に中継する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
2
starfry

まだ先にやります-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
6
Jenny D

設定は次のとおりです。

$ 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)

0
Todor

Main.cfに配置したレプリカでtransport_mapsを使用してみることができます

transport_maps = hash:/etc/postfix/transport

次に、/ etc/postfix/transportに配置します

localdomain smtp:yourmasterserver

次のことを忘れないでください。

postmap /etc/postfix/transport

そしてpostfixを再起動します

0
Emil C