Postfix は特定のポートでメールを受け付けます

Postfix は特定のポートでメールを受け付けます

弊社のメール サーバー経由でメールを送信するクライアントがいます。メールをバッチ送信するには、特定のポート (この場合は 1025) のすべてのメールを、バッチ処理用に MySQL に詳細を保存する accept スクリプトに転送します。これをテストすると、問題なく動作します。クライアントがテストすると、問題なく動作しますが、Unica システムから送信すると、メールがスクリプトを通り過ぎてメール ストリームに入ってしまうようです。これは可能ですか?

以下はmaster.cfからの抜粋です。

000.000.000.000:1025 inet n      -       -       -       0       smtpd
        -o mynetworks=hash:/etc/postfix/injector/networks
        -o content_filter=clientid:
        -o syslog_name=clientid
        -o smtpd_timeout=1800s

clientid  unix   -       n       n       -       0       pipe
        flags=q user=filter argv=/var/injector/inject.php clntid

ご協力いただければ幸いです。

ありがとう!

答え1

問題を診断するには、まずより多くのデータを収集する必要があります。/etc/postfix/main.cf の debug_peer_level および debug_peer_list オプションを使用できます。

例えば

debug_peer_list=UNICA.SERVER.IP.ADDRESS
デバッグピアレベル=2

(十分な情報が得られない場合は、デバッグ レベルをさらに上げてください)

そのデータを取得したら、Unica システムからのメールが実際にカスタム フィルターに送信されているかどうかを確実に判断できます (実際には送信されていないようです)

答え2

SMTP はポート 25 (標準) を経由するため、クライアントが Unica システム経由で送信する場合、そのポートに送信されます。ユーザー側では、ポート 25 でリッスンしている smtpd プロセスは inject.php スクリプトについて何も知りません。

クライアントは、MTA (SMTP サーバー) またはプレーン メール クライアントなど、非標準ポートの使用を認識するシステムを介して送信する必要があります。または、セットアップを再設計する必要があります。

はい、アドレスを削除することができます (を参照man 5 master)。

少し明確にするために、私たちはあなたの設定を完全には確認していないので、おそらくあなたが望むものを手に入れることができるでしょう (未テスト)。あなたのクライアントなどがポート 1025 に送信しない場合は、送信者のアドレスまたはドメインに基づいてメールをルーティングできるようです。

/etc/postfix/main.cf:
sender_dependent_relayhost_maps = /etc/postfix/my_special_client

/etc/postfix/my_special_client:
@example.com  127.0.0.1:1025

# postmap /etc/postfix/my_special_client
# postfix stop && postfix start

答え3

本当に詳細なデバッグを行うために、tcpdump を実行してそれを ethereal に戻し、実際に行われた SMTP セッションを正確に調べることがあります。

tcpdump -i any -s 1500 -w /tmp/some-file.dump host ip.of.your.client

関連情報