web-dev-qa-db-ja.com

複数のIPアドレスからメールを送信するためのLinuxメールサーバー

複数のIPアドレスから電子メールを送信する機能を備えた電子メールサーバーをセットアップしようとしています。これにより、マーケティングシステムは、DNSの逆引き参照の一貫性を保ちながら、複数のドメインから電子メールを送信できます。 IE、domain1.comは10.0.0.1に解決され、domain2.comは10.0.0.2に解決されます。

理想的には、メールサーバーはヘッダーのfromドメインをチェックし、実際の送信に使用して、プールから正しいIPアドレスを選択します。現在、Eximを使用しており、1つの解決策は、異なるインターフェイスでEximの複数のインスタンスを実行し、ヘッダーチェックを実行して電子メールを正しいEximインスタンスに転送するSMTPプロキシを作成することだと考えていましたが、それよりも簡単な解決策があるのではないかと思います。

誰もが知っているように、これにはスパムは含まれず、使用するすべてのドメインとIPアドレスを所有しています。

6
Alex Fort

私があなたを理解しているなら、あなたはサーバー上にメールを持っていて、そのサーバーには、例えば、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%ですが、明らかに醜いですが、上記は機能します。動的に処理するために必要なものはすべてそろっていると思います(「インターフェース」は拡張可能です)。

8
jj33

ルートの整合性を維持するには、eximのさまざまなインスタンスをさまざまなインターフェイスにバインドする必要があると思います(あなたが言うように)

プロキシは実際には必要ありません。条件を設定してルーターを(ドメインごと/差出人:一致ごとに)使用して、中継する「ホスト」を指定できます。

これを試したことはありません。それが機能するかどうかを知りたいと思います。

0
Mark Regensberg

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:}
0
Dmitry