ローカルにあるMTA(qmail)からのメール送信時の注意

linux, サーバー関連 2010年2月11日,

かなり・・・ハマったというか・・・
知らなかったのですがー。

ローカルに構築したMTAからメールを送信すると、
受け取り側のMTA側によっては拒否される、というもの。



たとえばこんな構成があった場合で
WEB1、2はロードバランスされて振り分けられる構成。
まぁよくある構成なんだけど、このWEB1かWEB2にMTAがあって
たとえばPHPやPerlでmailコマンドとかを利用してメールを送信したとすると・・・。
MTAにqmailを使ってる場合。qmailのログ( /var/log/qmail/current )にこんなログが出る事がある

1
delivery 40950: failure: Connected_to_xxx.xxx.xxx.xxx_but_sender_was_rejected./Remote_host_said:_553_ird-131w010.ahref.org_does_not_exist/

とか

1
delivery 40379: deferral: xxx.xxx.xxx.xxx_does_not_like_recipient./Remote_host_said:_450_4.1.8_<sonar@web2.sonarsrv.com>:_Sender_address_rejected:_Domain_not_found/Giving_up_on_xxx.xxx.xxx.xxx./

など。。
このエラーログをみる限りだと
Sender address rejected: Domain not found
だからメールを配信してるサーバーのドメイン名が正引きできない為に相手MTAに拒否られてるって事。

MTAの設定にもよるけど、基本的にはサーバーのホスト名でメールが送信されるため、
PHPやPerlでメールを送信しようとするとエンベローブとかがここでは
sonar@web2.sonarsrv.comみたくなってしまう。
読み替えると、Fromのアドレスは

Linuxユーザー名@defaultdomain(もしくはサーバーのホスト名)

となってしまう。

まぁここまでわかってしまうと解決は簡単で

①WEB1かWEB2のMTAから直接メール送信するのではなく、LB側のMTAを使用する。
②WEB1とWEB2のドメインを名前解決してやる

のどっちかで対策すればOKです。
①ならPHPやPerlで送信する際にLB側のsmtpを指定すればOK。
②はここではweb1.sonarsrv.comの正引きとしてLBと同じIPが引けるようにすればOK

検証にはソフトバンクの携帯を使うといいかも。
ソフトバンクの携帯はローカルに建てられたメールサーバーからのメールは
逆引きできないホスト名だった場合に拒否してきます。

One Response to “ローカルにあるMTA(qmail)からのメール送信時の注意”

  1. クリスチャンルブタン Says:

    そなーブログ » Blog Archive » ローカルにあるMTA(qmail)からのメール送信時の注意

コメントどうぞ