
弊社のメール サーバー経由でメールを送信するクライアントがいます。メールをバッチ送信するには、特定のポート (この場合は 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