さくらのVPSを借りて,Ubuntu(x86_64 10.04.3 LTS) にもろもろの環境をインストールしたところ,どうしてもメール送信がうまくいかず・・・解決までの覚書です.
まず,さくらのVPSは,お試し期間中はOP25Bが設定されるので,25番ポートは代金を入金するまでは開きません. https://vps.sakura.ad.jp/terms.html これ,知らないと,iptablesなどの設定ミスとかしたのかとか,いろいろとチェックを繰り返すはめになります.読んでないほうがいけないのかもしれませんが,もう少し目立つようにしてもらえたら・・・
で,OP25B解除後, apt-get install postfix でpostfixをインストールし,main.cf等を設定したわけですが,外向けのメールがどうしても送信できません.mail.logのエラー内容は次の通り.
reject: RCPT from xxx[127.0.0.1]: 550 5.1.1 <example@example.com>: Recipient address rejected: example.com;
いろいろと調べても,550エラーは,曖昧なエラーコードらしく,相手に到達して拒否されているのか,そもそも自分のサーバの中でエラーを吐いているのかもよくわからない.
telnet localhost 25 で1ステップずつ確認してみても, rcpt to: を入力すると,同じエラーが出て止まってしまう.見た目は相手に拒否されているようなので,さんざん,MXレコードが正しいかとか調べても解決せず.
初心に戻って main.cf の設定をよくよく見なおしてみると,設定した覚えのない,
default_transport = error
があり,これをコメントアウトすると,問題なく出ていくように・・・
この項目は,特定の宛先($mydestination,$inet_interfacesなど)にマッチしない宛先への配送をどうするかを決定するもので,errorになっていると,上述のように配送できなくなるようです.あたかも相手に拒否されたかのように見えるのがややこしい・・・.デフォルト値はsmtpですが,念のため,
default_transport = smtp
としておけば安心.
なぜそんな設定が勝手にされたのかというと,どうやら,postfixのインストール時に,GUI的設定画面で「Local only」を選ぶと,main.cfに勝手に記載してくれるようです・・・
設定画面で出てくる選択肢が,実際にどのような設定になるかがわかりにくいので,とりあえず一番厳しめの「Local only」にしたのが仇となったようでした.このはまり方,ぐぐってもなかなか解決しなかったのでメモしておきます.