STERFIELD

smtp local送信できない件

smtp local送信できない件

お客様の専用サーバ(OSはCentOS 6系)から送信できない件で、いろいろ調べてみて解決した流れを書きたいと思います。

最初のエラーメッセージ

PHPのSwiftmailerを使って、下記のエラーメッセージが出ておりました。

要は、権限がないため、locahhostの25ポートへの接続が失敗したということです。

iptablesをoffにしてみた

最初に思いついたのは、iptablesが動いているから、そちらをoffしてやってみたいと思います。

ポート25が空いてるかを確認してみた

上記で解決出来なかったため、まずポート25が空いてるかを確認してみたいと思います。

25ポートが空いています。。
また、外部サービスでも、外から25ポートにアクセスできることを確認できました。

mailコマンドで送信を試してみた

localでmailコマンドを直接実行して、送信できるかを確認してみたいと思います。
mailxがインストールされていないから、まずインストールします。

結局、mailコマンドでは、直接送信は出来ています。。

telnetで接続してみた

localでtelnetで25ポートを接続してみたいと思います。

接続はできます。。。

送信ユーザを作ってみた

もうどうなっているのがわからないですが、ひらめきに「送信ユーザはどうなっているか」を思いつきました。
ふつうは、localhostからsmtpで送信するのに、送信ユーザの指定は必要ありませんが、一応作ってみました。

でも、Swiftmailerからは送信できませんでした。

単純なPHPテストスクリプトを作った

それではPHPのmail関数を作って送信してみました。
送信に失敗したものに、maillogに思わずなメッセージが残ってました。

SELinuxをoffに

上記なメッセージを手がかりに、原因がようやくわかりました。
SELinuxのウェブページからの送信を防止する機能があります。それが作動しており、送信を邪魔しているということです。

ウェブ送信を許す設定にしました。

それでも送信が出来なかったため、SELinux自体をoffにしました。

これで解決です!

追記

テストサーバではdomainがないため、postfixには設定できずに、お客様の今持っているドメインを設定してしまいました。
それで、お客様の今持っているドメインへの送信はlocalへの送信に認識され、xxxのユーザが存在しないから、550 Unknown userになってしまいました。

Author Profile

著者近影

スターフィールド編集部

SHARE

合わせて読みたい