複数のIPアドレスから電子メールを送信する機能を備えた電子メールサーバーをセットアップしようとしています。これにより、マーケティングシステムは、DNSの逆引き参照の一貫性を保ちながら、複数のドメインから電子メールを送信できます。 IE、domain1.comは10.0.0.1に解決され、domain2.comは10.0.0.2に解決されます。
理想的には、メールサーバーはヘッダーのfrom
ドメインをチェックし、実際の送信に使用して、プールから正しいIPアドレスを選択します。現在、Eximを使用しており、1つの解決策は、異なるインターフェイスでEximの複数のインスタンスを実行し、ヘッダーチェックを実行して電子メールを正しいEximインスタンスに転送するSMTPプロキシを作成することだと考えていましたが、それよりも簡単な解決策があるのではないかと思います。
誰もが知っているように、これにはスパムは含まれず、使用するすべてのドメインとIPアドレスを所有しています。
私があなたを理解しているなら、あなたはサーバー上にメールを持っていて、そのサーバーには、例えば、4つのIPアドレスが設定されています。インターネットに送信するときに、メールサーバーでこれら4つのIPのいずれかをアウトバウンドインターフェイスとして使用する必要があります。これが間違った解釈である場合は、私に知らせてください。
Exim SMTPトランスポートは、さまざまなインターフェイスを介して電子メールを送信するように構成できます。ハードコードされた方法で、これを行うことができます:
routers:
send_domaina_com:
driver = dnslookup
domains = domaina.com
transport = domaina_com_smtp
send_domainb_com:
driver = dnslookup
domains = domainb.com
transport = domainb_com_smtp
send_domainc_com:
driver = dnslookup
domains = domainc.com
transport = domainc_com_smtp
send_domaind_com:
driver = dnslookup
domains = domaind.com
transport = domaind_com_smtp
TRANSPORTS:
domaina_com_smtp:
driver = smtp
interface = 10.0.0.1
domainb_com_smtp:
driver = smtp
interface = 10.0.0.2
domainc_com_smtp:
driver = smtp
interface = 10.0.0.3
domaind_com_smtp:
driver = smtp
interface = 10.0.0.4
私は99.99%ですが、明らかに醜いですが、上記は機能します。動的に処理するために必要なものはすべてそろっていると思います(「インターフェース」は拡張可能です)。
ルートの整合性を維持するには、eximのさまざまなインスタンスをさまざまなインターフェイスにバインドする必要があると思います(あなたが言うように)
プロキシは実際には必要ありません。条件を設定してルーターを(ドメインごと/差出人:一致ごとに)使用して、中継する「ホスト」を指定できます。
これを試したことはありません。それが機能するかどうかを知りたいと思います。
Eximは、「From:」ヘッダーのドメイン名に基づいて、さまざまなIPアドレスから電子メールを送信できます。各ドメインを個別にハードコーディングする必要はありません。 remote_smtp
トランスポートのインターフェースは次のように設定する必要があります。
interface = "${lookup{${lc:${domain:${address:$h_from:}}}}lsearch{/etc/exim/domainips}{$value}}"
ドメインとIPのペアのリスト/etc/exim/domainips
は、次の形式で作成する必要があります。
domain1.com: 10.0.0.1
domain2.com: 10.0.0.2
また、10.0.0.1のPTRレコードがdomain1.comを指している場合は、それに応じてHELOを設定すると便利です。
helo_data = ${lc:${domain:${address:$h_from:}}}
電子メールがPHP/Apacheで送信される場合、実際のエンベロープ送信者は、「From:」ヘッダーに関係なく常に同じになります(例:Apache@primary_hostname.com)。これを修正するために、return_pathを設定できます。
return_path = ${address:$h_from:}
理想的には、remote_smtp
トランスポートは次のようになります。
remote_smtp:
driver = smtp
interface = "${lookup{${lc:${domain:${address:$h_from:}}}}lsearch{/etc/exim/domainips}{$value}}"
helo_data = ${lc:${domain:${address:$h_from:}}}
return_path = ${address:$h_from:}