現在専用サーバーを借りてwebサーバーを構築しているのですが、はじめからインストールしてあったPostfixが機能せず PHP の mail() を使ってメールを送信しようとしても送信できません。
そこで今あるPostfixを全てアンインストールしsendmailかqmailをインストールしようと思います。 ただサーバー構築は初めてのため分かりやすく1から教えてください。 (例:まずsshでログインし cd /usr/etc/mail に行き make を実行し..な感じです。)
あと、現在sendmailにしようかqmailにしようか迷っています。sendmailは脆弱性のニュース良く耳にするのでqmailにしようか迷っています。最終的にはPHPスクリプトからメールが送信できればいいので、それを考慮してお願いします。
TurboLinuxの情報で申し訳ないですが
http://www.turbolinux.co.jp/dcforum/DCForumID11/7097.html
辺り参考になりませんか?
http://php.s3.to/man/ref.mail.html
にも書いてありますが、「メール関数を使用可能にするには、PHPのコンパイル時点でシステム上の sendmailバイナリにアクセスできなければなりません。」とありますので、MTAをインストールし治すのではなくて、PHPの再インストールをしみてはいかかですか?
http://jp2.php.net/manual/ja/ref.mail.php
http://www02.so-net.ne.jp/~ytanaka/freebsd/Postfix.html
辺りを見るとPostfixでも普通に使えるから、こういうページがあるんだろうなと思います。
FreeBSD のパッケージ管理は ports/Package にて行います。
Postfix がどのように導入されているのかが分からないのですが、
これらの仕組みに沿っていると仮定して回答します。
基本的には以下の質問が類似であると思うので参考にしてください。
http://q.hatena.ne.jp/1159331293
ports が導入されている事を前提にすると以下のコマンドを順に実行する事で qmail の導入が行えます。
$ su - # 実行ユーザーを root に Password: # <- パスワードを入力する # cd /usr/posts/mail/qmail # make # make install # make enable-qmail
この時点で qmail がデフォルトの MTA となります。
Postfix 自体を削除してしまうには、
# pkg_info | grep -i postfix
でパッケージ名とバージョンが確認できるので、
# pkg_delete "上記で確認したパッケージ名"
で削除できます。
その前にb-windさんはPostfixを消去してqmailをインストールする方法でOKだと思いますでしょうか?
一応b-windさんが考える最善の方法で直してみたいと考えています。
サーバから外にメールを送れない状態なだけで、phpからpostfixには正常に処理を渡していると思いますが。
・パケットフィルタ系のツールで通信を遮断していませんか?
・宛先アドレスは正しいですか?
・DNSの設定は正しく、名前解決も出来ていますか?
・前の質問で、mail()の第5引数に '-f自分のメアド' を加えたときに「だめでした..」とは何がどうダメなのですか?ログに変化はありませんか?バウンスは受け取れましたか?
・宛先のプロバイダによってInbound Port 25 Blockingされていませんか?
一つ一つ原因をつぶさないと、いつまで経ってもスキルアップできませんよ。
まずはtelnetとかで、宛先メールサーバの25番ポートへの接続が可能か確かめてみましょう。
ありがとうございます。
>パケットフィルタ系のツールで通信を遮断していませんか?
わかりません。一応ClamAVとSpamAssassinがインストールしてあります。
>・宛先アドレスは正しいですか?
>DNSの設定は正しく、名前解決も出来ていますか?
正しいです。できています。
>前の質問で、mail()の第5引数に '-f自分のメアド' を加えたときに「だめでした..」とは何がどうダメなのですか?ログに変化はありませんか?バウンスは受け取れましたか?
バウンスは受け取れませんでした。ログは変わったとこはありませんでした。
>宛先のプロバイダによってInbound Port 25 Blockingされていませんか?
分かりませんが、Yahoo,Gmail両方で試しました。
一応、現サーバーの登録したホストネームは hoge.co で 再構成した際 hostname で変更しました。これが何らかの原因ではないでしょうか?
よろしくお願いします。
(ito-yuさんがこの質問をブログに書くのか気になるところです。)
できれば「まずはtelnetとかで、宛先メールサーバの25番ポートへの接続が可能か確かめてみましょう。」に対するレスポンスが欲しかったところですが。さて、サーバにはsshか何かでrootログインできると思ってよろしいですか?
# nslookup > set type=mx > example.com ←宛先メアドの@より後ろ
と入れるとその後
~ mail exchanger = mail.example.com
みたいな表示が出るかと思います。それが相手メールサーバです。
次にそのメールサーバにtelnetします。
> exit # telnet mail.example.com 25
と入れて
220 mail.example.com ~
みたいな行が出れば、接続できていることになります。
とりあえず、やってみて下さい。
結果は、適当に解釈せず、まずは一連の表示をコピペするくらいでないと判断ミスが入ります。
http://www.nurs.or.jp/~telnet/
telnetでsmtp(メール送信プロトコル)を使うのに参考になるページです。
これでよろしいでしょうか?
telnetの結果を見る限り、ポート遮断の可能性は捨てていいみたいですね
では、次はたぶん存在しているmailコマンドでの送信を確認してみましょう。私のメアドに送ってみるのはどうですか?
# mail ito.ysk@gmail.com Subject: TEST from esecua From: (esecuaさんのメアド、私に晒しても良ければですが) てきとうに文章を書いて下さい . EOT
赤字部分があなたの入力するところです。
空行も間違いなく入れて下さい。
で、結果にかかわらず、その際のmaillogを見せて下さい。
何かわかるかもしれません。
mailコマンドなんて無いよ!という事であればまた考えましょう
ありがとうございます。
事情がありまして、自分のメールアドレス(Gmail)先にメールを送信してみました。
各詳細は http://d.hatena.ne.jp/esecua/20061015 にアップしておきました。
よろしくお願いします。
前の回答に書いた設定ファイルはなにかの勘違いかも。
postfixのmain.cf設定ファイルの在処はわかりますか?
(うちのLinux・rpm版だと/etc/postfix/main.cfですが)
その中の、
myhostname = ~
はどうなっていますか?
http://www.kobitosan.net/postfix/trans-2.1/jhtml/postconf.5.html
今のhostnameと一致していなければ、変更してPostfixを再起動してみてください。
一致しています。
まず、「From: 」も赤字にするのを忘れていました。スミマセン…
ログを見たところ
Oct 16 04:30:37 www amavis[2717]: (02717-10) DSN: NOTIFICATION: Action:failed, RELAYED 554 Clean, <root@mydomain.ne> -> <esecua@gmail.com>
Oct 16 04:30:37 www postfix/smtpd[68956]: warning: 100.100.11.10: hostname www.hostname.ne verification failed: hostname nor servname provided, or not known
Oct 16 04:30:37 www postfix/smtpd[68956]: connect from unknown[100.100.11.10]
Oct 16 04:30:37 www postfix/smtpd[68956]: NOQUEUE: reject: RCPT from unknown[100.100.11.10]: 554 5.7.1 <root@mydomain.ne>: Recipient address rejected: Access denied; from=<> to=<root@mydomain.ne> proto=ESMTP helo=<localhost>
Oct 16 04:30:37 www amavis[2717]: (02717-10) response to RCPT TO for <root@mydomain.ne>: "554 5.7.1 <root@mydomain.ne>: Recipient address rejected: Access denied"
Oct 16 04:30:37 www amavis[2717]: (02717-10) (!) mail_via_smtp: DATA skipped, no valid recips, 0
Recipient address rejected: Access denied
キーワードは↑ですかね。似たような状況の質問がありました
http://q.hatena.ne.jp/1124538561
hostnameの設定をしくじっているから、Postfixが中継を拒否しているように見えます。
http://www.postfix.org/securityportal.200011/closet20001122.html
/etc/postfix/access-inbound みたいなファイルはありますか?
そこに、現hostname(www.hostname.ne ですか)を通す設定を書いてみてください
www.hostname.ne OK
access-inboundは無いようです。
ん~ちょっと特別なケースのような感じでしょうか。itoさんの回答も参考にさせていただきながら、freebsdに詳しい友人が今週中に見に来るので、追って報告します。
引き続き回答お願いいたします。
引き続き回答を、ということなので、ちょっとお邪魔します。
すでに考慮済みの事項だったら申し訳ないのですが、amavis をインストールされていませんか?
http://www.google.com/search?q=amavis&btnG=Search&ie=euc...
このアプリは、相当深く Postfix に絡みまくるみたいですが、そのあたりの設定は問題ないですか?
もし「考えてなかった」ということであれば、まずはコレを停止してみることをお勧めします。その上で、再度ログを採取ですね。
あと、以下のような問題もあるみたいなので、
http://tmtm.org/cgi-bin/w3ml/sylpheed-jp/msg/45
dig(もしくはnslookup)の結果も貼りましょう。
$ dig 100.100.11.10
$ dig www.mydomain.ne
$ dig www.hostname.ne
本当にPHPを再インストールすると直るんでしょうか?
現在PHPは正常に動いています。メールだけが機能していないのでメールを再インストールした方がいいと思うのですが、、、