postfix の550エラーではまった・・・

さくらの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」にしたのが仇となったようでした.このはまり方,ぐぐってもなかなか解決しなかったのでメモしておきます.