- ベストアンサー
sendmailで別サーバにメールを送信する方法と解決策
- sendmailを使用して別のサーバにメールを送信する方法と、送信できない場合の解決策についてご説明します。
- 要件は、CentOS 5の環境でsendmailを使用し、サーバAからサーバBにメールを送信することです。この質問では、SAからSBへの送信ができないという問題が発生しています。
- SAとSBの間で送受信ができていること、SAのドメイン名がsendmail.co.jpであり、SBのドメイン名がcentos.co.jpであることなど、関連する詳細な情報も提供されています。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
お力になれていなくて心苦しいです。 digの結果とbindのconfおよびゾーンファイルから考えますとdnsの設定は問題無く、MXがきちんと引けているようです。 ころころ変わりまして申し訳ありませんが、消去法でsendmail側が怪しい可能性が高いことになります。 /etc/mail配下のファイルを今一度見直してみる。 sendmail.cfでデバッグレベルをデフォルトの9から16とかに変更すると /valog/maillogに記録されるログがもう少し詳しくなるのでそれを確認することが考えられます。 設定箇所はこんな行です。 O LogLevel=9 申し訳ありませんが、ログや設定ファイルを全てみることは出来ないのでちょっと手詰まり感があります。
その他の回答 (4)
- maesen
- ベストアンサー率81% (646/790)
いまごろになって気づいて申し訳ありません。 >SAのsendmailは外部送信できるようにはしているつもりです。 >m4を使ってcfを編集しており、元々のcentosのsendmailから変更した点は以下です。 >※頭のdnlを外したもの/つけたものも含んでいます。 > >DAEMON_OPTIONS(`Port=smtp,Addr=10.100.10.2, Name=MTA')dnl >dnl FEATURE(`accept_unresolvable_domains')dnl >LOCAL_DOMAIN(`centos.co.jp')dnl >Cwcentos.co.jp >MASQUERADE_AS(`centos.co.jp')dnl >FEATURE(masquerade_envelope)dnl >FEATURE(masquerade_entire_domain)dnl >MASQUERADE_DOMAIN(`.centos.co.jp')dnl >FEATURE(`virtusertable',`hash /etc/mail/virtusertable.db')dnl >VIRTUSER_DOMAIN_FILE(`/etc/mail/virtuser-domains')dnl これはSAのsendmail.mcですよね。 これを見るとSAがcentos.co.jpのMTAとして設定されているように思いますが間違っていますでしょうか。 DNSは、 >IN MX 10 mail.centos.co.jp. >mail IN A 192.168.10.2 となっていますので、centos.co.jpのメールサーバはSB(192.168.10.2)のはずなので、 SAのsendmailがcentos.co.jpのMTAになっていてはおかしいです。 ここはsendmail.co.jpであるべきだと思います。 確認して見てください。
お礼
nslookupで名前解決はできていましたが bindがなんらかの問題で正常稼働していなかったようで 再インストールすることで解決しました。 いろいろとありがとうございました。 情報により解決に至った為、ベストアンサーとさせて頂きました。
補足
大変失礼致しました。 こちらは転記ミスです。 上記の項目はすべてsendmail.co.jpとなっております。
- 774danger
- ベストアンサー率53% (1010/1877)
SAの /etc/mail/mailertable に centos.co.jp smtp:192.168.10.2 と書いて配送させるんじゃダメなんでしょうか? http://www.ksknet.net/sendmail/mailertable.html
お礼
ありがとうございます。 可能であれば勉強ということもあり、 DNSで解決をしたいとおもっております。 ただ、mailertableを配送することでSBに配送できたので やはりDNSの設定に問題がありそうです。
- maesen
- ベストアンサー率81% (646/790)
>知識がないことは重々承知しております。 >勉強中のため上記の作業をしておりました・・・ 失礼なことを申し上げたようですいません。 ログを見させて頂いたのですが、 >p890v7dj000610: from (以下省略) この行はmailコマンドによるsendmailの受信ログですね。 送信元メールサーバはlocalhostです。 >p890vRg4000613: from この行はSMTPによるsendmailの受信ログですね。 送信元サーバはlocalhostです。 >p890v7dj000610: to このメッセージはmailコマンドにより受信メールの送信ログですね。 送信先サーバはローカルホストです。 つまり、SAはtest○centos.co.jp宛のメールを自分自身に送っていることになります。 sendmail側の設定でcentos.co.jpが自分自身のローカルアドレスと思っているか、 MXレコードの名前解決を行ったとき自分自身のIPアドレスを返してしまうようDNSが設定されているような設定ミスがあるように思います。 (ログにSMTP接続のログ出力があることからDNS側の問題の可能性が大きいように思う) 現段階ではSBは無関係に思います。 直接関係あるかわかりませんが、 >ns1.centos.co.jp. 86400 IN A 127.0.0.1 digでこの行が返るのはおかしいです。 ローカルループバック用のゾーン以外で127.0.0.1が設定されていることは問題です。 centos.co.jpの正引きゾーン設定を見直しす必要があると思います。
お礼
ありがとうございます。 可能であれば勉強ということもあり、 DNSで解決をしたいとおもっております。 ただ、mailertableを配送することでSBに配送できたので やはりDNSの設定に問題がありそうです。
補足
失礼しました。 774dangerさんへの回答をお礼で記載してしまいました。 他の方の回答ですが、mailertablesに centos.co.jp smtp:[192.168.10.2] とすることでメールを配送することができました。 となると、やはりDNS側での設定ミスの可能性が高そうです。 勉強ということもありDNSでの解決をさせたいとおもっております。 DNSの情報を記載致しましたのでおかしな部分がありましたら ご教授頂けますでしょうか。 ※なお、アットマークは○にしております。 /var/named/chroot/etc/named.conf は以下としております。 ※サイトを参考に書いております。 =================================================================== options { // listen-on port 53 { 127.0.0.1; 10.100.10.2; }; listen-on port 53 { 127.0.0.1; }; // zone ファイルの格納場所 directory "/var/named"; // BIND の利用を許す範囲を指定 allow-query { // 自分自身( localhost ) 127.0.0.1; 10.100.10.0/24; }; // スレーブ DNS のアドレスを記述。内向き DNS の場合は必要ないが一応記載。 allow-transfer { // 自分自身( localhost ) 127.0.0.1; 10.100.10.0/24; }; }; // localhost の正引きの設定 zone "localhost" { // Master DNS Serverであることを示す type master; // ファイル名 file "localhost.zone"; }; // localhost の逆引きの設定 zone "0.0.127.in-addr.arpa" { // Master DNS Serverであることを明示 type master; // ファイル名 file "0.0.127.in-addr.arpa"; }; // centos.co.jp の正引きの設定 zone "centos.co.jp" { // Master DNS Serverであることを示す type master; // ファイル名 file "centos.co.jp"; }; =================================================================== /var/named/chroot/var/named/centos.co.jp ※前回のご回答の際に127.0.0.1が表示されてしまうのはおかしいということでしたので 以下の矢印の通り、127.0.0.1から10.100.10.2に変更しましたがやはり送信できない状態で mailログも同じ内容でした。 =================================================================== $ORIGIN centos.co.jp. $TTL 86400 ○ IN SOA ns1.centos.co.jp. root.ns1.centos.co.jp. ( 2011090601 3H 15M 1W 1D ) IN NS ns1.centos.co.jp. IN MX 10 mail.centos.co.jp. ○ IN A 192.168.10.2 ns1 IN A 10.100.10.2 ←この行を127.0.0.1からSAのIPに 変更しました。 mail IN A 192.168.10.2 =================================================================== resolve.confは以下としております。 =================================================================== nameserver 127.0.0.1 ===================================================================
- maesen
- ベストアンサー率81% (646/790)
>1.SBについてはDNSがないため、hostsで解決させているがそれで問題ないのか。 今回のトラブルはSA→SBということなので基本的にはSBの名前解決は関係しないと思います。 逆引き出来ないホストからの受信を拒否するような設定をsendmailに入れていると別ですが。 ただ、SB→SA送信を行う場合には問題になると思います。 >SB⇔SC間は送受信ができております。 これはなんでという疑問はありますが。 >2.上記のログからSAはcentos.co.jpに送信しようとしているのでしょうか? sendmail自体のログについて記載が >送信ログをみるとrelay=test@localhostとDNSをみていないような気がしております・・・ これしかないのでちょっと判断が難しいです。 それよりも、digなどでDNS名前解決の検証結果を載せられていますが、肝心のMXレコードについての設定が見えてこないのですがどうなっていますか? また余計なお世話かもしれませんが、 >SAは、 >resolve.confは、127.0.0.1と設定しています。 >※これが正しいのかもわかりませんが。 基本的なことですので、ローカルループバックについて理解されたほうがいいと思います。 とっても失礼ですがDNSおよびMTAの設定をするにはネットワークの知識がちょっと不足しているように感じます。
補足
ご回答頂きありがとうございます。 知識がないことは重々承知しております。 勉強中のため上記の作業をしておりました・・・ 引き続き、教えて頂けますと幸いです。 ループバックについてはもっとサイトをみて理解を深めてみます。 因みにですが、 SBでは逆引きできないホストからの受信を許可しております。 dnl FEATURE(`accept_unresolvable_domains')dnl dig centos.co.jp mx をした結果です。 ;; QUESTION SECTION: ;centos.co.jp. IN MX ;; ANSWER SECTION: centos.co.jp. 86400 IN MX 10 mail.centos.co.jp. ;; AUTHORITY SECTION: centos.co.jp. 86400 IN NS ns1.centos.co.jp. ;; ADDITIONAL SECTION: mail.centos.co.jp. 86400 IN A 192.168.10.2 ns1.centos.co.jp. 86400 IN A 127.0.0.1 ちょっと状況が変わりまして基本的なことですが・・・ SA上でlocal-host-domainsにcentos.co.jpを記載していたことにより SAのメールと認識してメールが処理されておりました。 そのため、削除しましたがやはりまだ送信できない状況です。 ただ、エラーは変わりました。 ログを以下に張り付けました。 ※アットマークはokwebでは確認対象になるようですので○にしてます。 送信コマンドは mail test○centos.co.jp としております。 p890v7dj000610: from=example, size=54, class=0, nrcpts=1, msgid=<201109090057.p890v7dj000610○sendmail.co.jp>, relay=example○localhost ※fromのtestはSA上にアカウントが存在します。 送信をして少ししたら p890v7dj000610: from=example, size=54, class=0, nrcpts=1, msgid=<201109090057.p890v7dj000610○sendmail.co.jp>, relay=example○localhost NOQUEUE: connect from localhost [127.0.0.1] AUTH: available mech=LOGIN PLAIN ANONYMOUS, allowed mech=EXTERNAL GSSAPI KERBEROS_V4 DIGEST-MD5 CRAM-MD5 p890vRg4000613: Milter: no active filter p890vRg4000613: --- 220 unknow ESMTP p890vRg4000613: <-- EHLO sendmail.co.jp p890vRg4000613: --- 250-sendmail.co.jp Hello localhost [127.0.0.1], pleased to meet you p890vRg4000613: --- 250-ENHANCEDSTATUSCODES p890vRg4000613: --- 250-PIPELINING p890vRg4000613: --- 250-8BITMIME p890vRg4000613: --- 250-SIZE p890vRg4000613: --- 250-DSN p890vRg4000613: --- 250-ETRN p890vRg4000613: --- 250-DELIVERBY p890vRg4000613: --- 250 HELP p890vRg4000613: <-- MAIL From:<example○sendmail.co.jp> SIZE=54 p890vRg4000613: --- 250 2.1.0 <example○sendmail.co.jp>... Sender ok p890vRg4000613: <-- RCPT To:<test○centos.co.jp> p890vRg4000613: --- 250 2.1.5 <test○centos.co.jp>... Recipient ok p890vRg4000613: <-- DATA p890vRg4000613: --- 354 Enter mail, end with "." on a line by itself p890vRg4000613: from=<example○sendmail.co.jp>, size=360, class=0, nrcpts=1, msgid=<201109090057.p890v7dj000610○sendmail.co.jp>, proto=ESMTP, daemon=MTA, relay=localhost [127.0.0.1] p890vRg4000613: --- 250 2.0.0 p890vRg4000613 Message accepted for delivery p890v7dj000610: to=test○centos.co.jp, ctladdr=example (500/500), delay=00:00:21, xdelay=00:00:21, mailer=relay, pri=30054, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (p890vRg4000613 Message accepted for delivery) p890vRg5000613: <-- QUIT p890vRg5000613: --- 221 2.0.0 sendmail.co.jp closing connection が表示されて終了します、SBで受信はしておりません。
お礼
設定が見えない以上口頭での対応はやはり難しいと思いますが 対応して頂きありがとうございます。 ログレベルは既に15にしており 前回、お出しした内容がそのログとなります。 >送信をして少ししたら >p890v7dj000610: from=example, size=54, class=0, nrcpts=1, msgid= (以下省略) DNSの設定に悪い部分は見受けられないとのこと 確認ありがとうございました。 もう少し調査をしてみます。