[server] さくらVPSでメール送信が出来なくて対処した時のメモ

2015年8月31日

サーバー サービス テクノロジー

さくらVPSのサーバーAからサーバーBに引っ越しを行なった際にサーバーAでできていたメール送信処理ができなくなったので、対応したことをメモしておきます。

メールモジュールはpostfix

はじめは「postfix」のモジュールが入っていないという程度の事で、インストールしたらメール送信できるだろうと浅く考えていましたが、実はサーバー移行時にモジュールチェックをしていたので、インストールはされている状態でした。 次に疑う事は、postfixの設定ですが、通常SMTPのみで使用する場合は、デフォルト設定で問題なく送れるはずなので、プログラム側で特殊な事をやっているか、サーバーAの方での環境を疑ってみました。

mailの設定を確認

$postconf -n alias_database = hash:/etc/aliases alias_maps = hash:/etc/aliases command_directory = /usr/sbin config_directory = /etc/postfix daemon_directory = /usr/libexec/postfix data_directory = /var/lib/postfix debug_peer_level = 2 html_directory = no inet_interfaces = localhost inet_protocols = ipv4 mail_owner = postfix mail_spool_directory = /var/spool/mail mailq_path = /usr/bin/mailq.postfix manpage_directory = /usr/share/man mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain mydomain = ***.com myhostname = ***.vs.sakura.ne.jp mynetworks = 192.168.2.0/24, 127.0.0.0/8 mynetworks_style = host myorigin = $mydomain newaliases_path = /usr/bin/newaliases.postfix queue_directory = /var/spool/postfix readme_directory = /usr/share/doc/postfix-2.6.6/README_FILES relay_domains = $mydestination sample_directory = /usr/share/doc/postfix-2.6.6/samples sendmail_path = /usr/sbin/sendmail.postfix setgid_group = postdrop unknown_local_recipient_reject_code = 550 サーバーA、サーバーBでこのコマンドをたたいて比べてみました。 細かい設定はあまり必要なく、重要なのは
mydomain = ***.com myhostname = ***.vs.sakura.ne.jp
この2点ぐらいでしょう。 セットしてみましたが、やはりメールは送られません・・・

いろんなサイトのやり方で検証

外部からの25番ポート経由で行う場合は、「inet_interfaces」を"localhost"ではなく"all"にするという事なのですが、 今回はWEBサービス側からのみなのでlocalhostからのSMTPアクセスになるので"localhost"で問題なし。

/var/log/maillogのエラーメッセージ

postfix/local[17467]: warning: inet_protocols: configuring for IPv4 support only 上記のようなログがたくさん溜まっていたので、調べたトコロ、ネットワーク高速化対応の時に対応したIPv6を無効化した事で、postfixのエラーが発生していたようですね。 これの対策は /etc/postfix/main.cf の編集で #inet_protocols = all #ここをコメントアウト inet_protocols = ipv4 #この行を追加 これでエラーは無くなりました。 でも、まだメールは送信できないようです・・・

各種コマンドで確認

サーバー管理者たるもの、コマンドラインでパケットの流れを把握できる必要があるので、 いくつかのコマンドで原因の追求を行なってみることにしました。

メールキューの確認

たまっているキューを見ることができますが、何件たまっているかぐらいの確認 $ mailq $ postqueue -p

iptablesの確認

そもそもポートを塞がれているかどうかを疑うべきで、下記で確認してみよう。 $ iptables -L ただし、今回はiptablesを登録していなかったので、これも対象外

動作しているポートのかくにん

localhost(127.0.0.1)で25番ポートが動作している事が確認できます。 この時点で、モジュールは正常に動いていると考えられます。 $ netstat -ant|grep :25 tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN

telnet通話してみる

まずはlocalhostで試してみるが正常動作している。 ※ちなみに、telnetコマンドを抜けるには「quit」と入力しよう $ telnet localhost 25 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. ***.vs.sakura.ne.jp ESMTP Postfix 次に外部サーバーにアクセスしてみる $ telnet google.com 25 Trying 127.0.0.1... なんとアクセスができていない・・・ もちろん、サーバーAで同じようにやってみると、正常にアクセスできている・・・ どうも、上位ネットワークではないか???という疑問が生まれる。

コマンドで直接メール送信してみる

$ mail ***@***.com # 自分のメールアドレス subject:**** # 件名 **** # 本文(改行しても書けます) . # 終了の時は「.」ピリオドを入力 これで自分のメールソフトで受け取ることができれば、疎通完了という事です。 もちろん、これも通らないのですね。

さくらインターネットの試用版の制限

ネットを見まわっている時に、気になる文句を見つけました。 https://teratail.com/questions/8722
さくらのVPSはお試し期間中はメール送受信できないようになってますがそんなオチ?
確かに、現在サーバーBは「お試し期間中」少し費用をケチって作業をしていたのだけれど、これが本当であれば、 サーバーの設定は問題ないが、25番ポートで外部にアクセスできないという症状は納得がいく。 さらに調べたトコロ、見事にさくらのサイトに書かれていました。 http://vps.sakura.ad.jp/flow/#target_caution その後、「本登録」を行ったトコロ、telnetで正常アクセスでき、メール送信も行われ、今までキューに溜まっていたデータも一気に送り出されました。 気持よく便秘解消できた気分です。 そもそも「OP25B」設定にひっかからないように、SSLを使えばこういった問題に当たらないわけですが、標準仕様も重要なので、こちらは覚えておくことにしましょう。

人気の投稿

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。

ブログ アーカイブ