- ベストアンサー
CentOSでpostfixを設定する方法
- CentOSにpostfixを導入し、メール受信をトリガーにシェルスクリプトを起動させたいと考えています。
- 設定がうまくいかないため、他のサイトを参考に試してみましたが、動作しません。
- main.cfの設定が気になっています。myhostnameとmydomainが同じです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
maillog が出るようになったのですね。 > fatal: parameter "smtpd_recipient_restrictions": specify at least one working instance of: check_relay_domains, reject_unauth_destination, reject, defer or defer_if_permit > main.cfの記述漏れか、設定忘れのに見えるのですが そうですね。 「smtpd_recipient_restrictions には check_relay_domains, reject_unauth_destination, reject, defer, defer_if_permit のうち 少なくともどれかひとつを指定せよ」と言われています。 main.cf の smtpd_recipient_restrictions の設定値を点検してください。 ひとまず smtpd_recipient_restrictions の記述をコメントにして、デフォルト値に戻してみるのもいいかもしれません。 http://www.kobitosan.net/postfix/trans-2.3/jhtml/postconf.5.html#smtpd_recipient_restrictions http://www.kozupon.com/mail/postfix2.html
その他の回答 (3)
- tomaju
- ベストアンサー率76% (84/110)
> ># dig +sh mx hogehoge.com > 255 mail.hogehoge.com. > となります。この255が原因の一つなのでしょうか? ANo.1 の補足の内容と異なるのが気になります。 -------------------------------------------------------------------------- DNSレコード レコードタイプ MX ドメイン名入力 .hogehoge.com. メールエクスチェンジャを入力してください hogehoge.com. <= mail.hogehoge.com でない メールエクスチェンジサーバの優先度を指定してください 10 <= 255 でない -------------------------------------------------------------------------- この設定は使われていないかもしれませんね。。。。 mail.hogehoge.com はVPSのサーバーでしょうか? 別のサーバーだったりしませんか? dig +sh a mail.hogehoge.com でVPSサーバーのIPアドレスが得られますか? DNSのAレコードで mail.hogehoge.com を VPSサーバーのIPアドレスに対応づけていれば、 @hogehoge.com 宛てのメールはVPSサーバーに対して送られるます。 もし別のサーバーのIPアドレスになっていれば、別のサーバーにいっちゃいます。
補足
度々のご教授有難う御座います。 本日、案件解消とは行きませんでしたが、エラーが出ているので解析して設定すれば出来るような気がしてきました。 以下エラーになります。 Aug 30 16:40:58 hoge postfix/master[9333]: warning: process /usr/libexec/postfix/smtpd pid 11701 exit status 1 Aug 30 16:40:58 hoge postfix/master[9333]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling Aug 30 16:41:58 hoge postfix/smtpd[12201]: fatal: parameter "smtpd_recipient_restrictions": specify at least one working instance of: check_relay_domains, reject_unauth_destination, reject, defer or defer_if_permit Aug 30 16:41:59 hoge postfix/master[9333]: warning: process /usr/libexec/postfix/smtpd pid 12201 exit status 1 Aug 30 16:41:59 hoge postfix/master[9333]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling Aug 30 16:42:59 hoge postfix/smtpd[13730]: fatal: parameter "smtpd_recipient_restrictions": specify at least one working instance of: check_relay_domains, reject_unauth_destination, reject, defer or defer_if_permit Aug 30 16:43:00 hoge postfix/master[9333]: warning: process /usr/libexec/postfix/smtpd pid 13730 exit status 1 Aug 30 16:43:00 hoge postfix/master[9333]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling Aug 30 16:43:38 hoge postfix/postfix-script: stopping the Postfix mail system Aug 30 16:43:38 hoge postfix/master[9333]: terminating on signal 15 main.cfの記述漏れか、設定忘れのに見えるのですが、初心者故の何処が違うのかがはっきり分かりません。色々設定してみたのですが、postfix自体が起動しなくなるなど、正しい設定方法が分かりませんでした。 どうぞ、ご教授くだされば幸いです。
- tomaju
- ベストアンサー率76% (84/110)
> You have new mail in /var/spool/mail/root > とrootにて受信しているようです。 > この時点で設定ミスがあると判断できますでしょうか? なんともいえませんが、エラーメールが来ているかもしれません。 root になって less や view 等で /var/spool/mail/root を開いてみるか、 mail コマンドでメールを読むことができます。 http://www.uetyi.mydns.jp/wordpress/command/entry-166.html > /var/log/maillog にはやはり何も記載されません。 むむむむ。 /var/log/maillog.1 に書かれているなんてことはないでしょうか? syslog を再起動してみるとか。 # service syslog restart postfix を再起動するとログに何か記載されますか? # postfix stop ; postfix start hoge.hoge.hoge 以外にメールを送るとどうでしょうか? > DNSレコード > レコードタイプ MX > ドメイン名入力 .hogehoge.com. > メールエクスチェンジャを入力してください hogehoge.com. > メールエクスチェンジサーバの優先度を指定してください 10 コントロールパネル等で設定しているのでしょうか。 ドメイン名入力のところで、.hogehoge.com. のように 最初に . がついていてよいのか、ちょっとわかりません。。。 実際にDNSの問い合わせをして、期待する設定になっているか 確認した方がいいですかね。 CentOS上からだと、まずメールエクスチェンジャのホスト名を調べて、 # dig +sh mx hogehoge.com 10 hogehoge.com. そのホスト名のIPアドレスを調べて、VPSサーバーのグローバル IPアドレスになっていればOKかと思います。 # dig +sh a hogehoge.com xxx.xxx.xxx.xxx maillog が確認できてからと思っていたのですが、 > hoge.hoge.hoge: | "/usr/local/hoge/bin /usr/local/hoge/bin/sh restart.sh" の記述はこの通りなのでしょうか? /usr/local/hoge/bin はディレクトリのように思われます。 このパスのファイルがなければ command not found になります。 また restart.sh は実行時のカレントディレクトリに存在しないと動かないですね。 /usr/local/hoge/bin というコマンドがあり、/usr/local/hoge/bin/sh と restart.sh がそれぞれ引数であるのなら納得がいきますけど。 ちなみに、メールを受信した際に、シェルスクリプトの起動がエラーになると /var/log/maillog には次のようなログが記載されます。 Aug 24 07:28:47 ouchisv postfix/local[5373]: 31BB6704805: to=<hoge.hoge.hoge@hogehoge.com>, relay=local, delay=0.04, delays=0.01/0/0/0.02, dsn=4.3.0, status=deferred (temporary failure. Command output: local: fatal: execvp /usr/local/hoge/bin: No such file or directory )
補足
度々のご回答誠にありがとう御座います。 > /var/spool/mail/root root自体が存在しませんでした。 ># dig +sh mx hogehoge.com 255 mail.hogehoge.com. となります。この255が原因の一つなのでしょうか? ># dig +sh a hogehoge.com を行った場合は 正しいIPアドレスが取得できました。 端末から携帯へのメール送信は正常に行えました。 ですが、やはり携帯からホストへのメールは何故か届いていないようです。 気になるのが宛先不明で返却されずにいることです。main.cfのドメイン名等を適当に入れた場合は 間髪をいれずに宛先不明のメールが返って来ます。この事からmain.cfのドメイン名などの設定は間違いではないと思っています。しかし、サーバー内にメールを受信した痕跡が一切ありません。 > hoge.hoge.hoge: | "/usr/local/hoge/bin /usr/local/hoge/bin/sh restart.sh" 上記の書き方がまずいとは私も思い以下に書き換えています hoge.hoge.hoge: "|/usr/local/hoge/bin/restart.sh" >/var/log/maillogですが 下記の通り全てが0バイトで何も記述されていません。 -rw------- 1 root root 0 Aug 21 05:08 maillog -rw------- 1 root root 0 Aug 14 05:08 maillog.1 -rw------- 1 root root 0 Aug 7 05:08 maillog.2 -rw------- 1 root root 0 Jul 31 05:08 maillog.3 -rw------- 1 root root 0 Jul 24 05:08 maillog.4 -rw------- 1 root root 0 Aug 21 05:08 messages -rw------- 1 root root 0 Aug 14 05:08 messages.1 -rw------- 1 root root 0 Aug 7 05:08 messages.2 -rw------- 1 root root 0 Jul 31 05:08 messages.3 -rw------- 1 root root 0 Jul 24 05:08 messages.4 度々のご教授有難う御座います。
- tomaju
- ベストアンサー率76% (84/110)
> ・myhostname = hogehoge.com ---->同じでOK? > ・mydomain = hogehoge.com ---->同じでOK? > ・myorigin = $mydomain > ・mydestination = $mydomain, $myhostname @hogehoge.com 宛てのメールをサーバーが受け取るように設定したのですね。 > /var/log/maillog には何も記載されていませんでした。 携帯キャリアのメールサーバーからの接続(connect)の形跡もないのでしょうか? サーバー上からメールを送ったら何か記載されますか? 例えばコマンドラインから echo test | mail -s test hoge.hoge.hoge@hogehoge.com > goge.hoge.hoge@example.comに携帯からメールを送信すると宛先不明等のメールは返ってきません hoge.hoge.hoge@hogehoge.com に送ったのではないということでしょうか? メールアドレスのドメインに関して、DNS設定で MXにレンタルサーバーの名前を登録してありますか? 例えば、 @ IN MX 10 mail.hogehoge.com. www IN A サーバーのIPアドレス mail IN A サーバーのIPアドレス
補足
ご回答有難う御座います。 >@hogehoge.com 宛てのメールをサーバーが受け取るように設定したのですね。 はい、仰るとおりです。 >携帯キャリアのメールサーバーからの接続(connect)の形跡もないのでしょうか? >サーバー上からメールを送ったら何か記載されますか? >例えばコマンドラインから echo test | mail -s test hoge.hoge.hoge@hogehoge.com You have new mail in /var/spool/mail/root とrootにて受信しているようです。 この時点で設定ミスがあると判断できますでしょうか? /var/log/maillog にはやはり何も記載されません。 >hoge.hoge.hoge@hogehoge.com に送ったのではないということでしょうか? はい、申し訳ありません誤字です。仰るとおりhoge.hoge.hoge@hogehoge.comに送りました。 >メールアドレスのドメインに関して、DNS設定で >MXにレンタルサーバーの名前を登録してありますか? 無知で申し訳御座いません。上記設定については、デフォルトで下記の様になっております。 DNSレコード レコードタイプ MX ドメイン名入力 .hogehoge.com. メールエクスチェンジャを入力してください hogehoge.com. メールエクスチェンジサーバの優先度を指定してください 10 上記のような結果になっております。 お忙しいところご回答下さい有難う御座います。 無知な故に見当はずれな質問をしているかもしれませんが どうぞ、再度ご教授下さればと思います。 宜しくお願い致します。
お礼
返信遅れて申し訳ありません。他の業務が入った為中途で止まっていました。 まだ、完全に成功したわけではありませんが、tomajuさんの的確なアドバイスのお陰で だいぶ分かるようになって来ました。この度は誠に有難う御座いました。