いつもは意見させていただいてます。
3年程前に一度投稿させてもらいました。
(http://www.aconus.com/~oyaji/bbs/past/0004/B0002127.html)
この度ISPのOP25B対策をきっかけに再度挑戦しております。
CentOS5(Apache,Postfix,Dovecot,vsFTP,mySQL)で挑戦しております。
Postfix の設定で行き詰まりましたので、お助けいただけますようお願いします。
設定でOP25B対策前の25番ポートでの環境では、うまくいったように思います。(LAN内のみのテスト)
そこからOP25B対策で、行き詰まりました。
現在の設定は、
/etc/postfix/main.cf において以下を追加
relayhost = [smtpauth.eonet.ne.jp]:587
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/isp_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_mechanism_filter = login, plain, cram-md5
/etc/postfix/master.cf において以下の#をはずし有効化
submission inet n - n - - smtpd
-o smtpd_etrn_restrictions=reject
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
この設定の状態で
自宅ドメイン → 自宅ドメイン での /var/log/maillog は
Jun 9 10:48:37 linux postfix/local[5557]: 866E0A940112: to=<xxx@aporia.ddo.jp>, relay=local, delay=0.11, delays=0.08/0.01/0/0.02, dsn=2.0.0, status=sent (delivered to command: /usr/bin/procmail)
となり送信したメールは受信できます。
自宅ドメイン → yahoo での /var/log/maillog は
Jun 9 11:08:12 linux postfix/smtp[5621]: BE19AA940113: to=<xxxx@yahoo.co.jp>, relay=smtpauth.eonet.ne.jp[203.140.81.12]:587, delay=0.21, delays=0.09/0.02/0.08/0.02, dsn=5.0.0, status=bounced (host smtpauth.eonet.ne.jp[203.140.81.12] said: 503 no auth during mail transaction (#5.5.0) (in reply to MAIL FROM command))
となり送信できたように見えますが、エラーメールが帰って木間っす。
どういう風に対策したらいいか御伝授ください。
よろしくお願いいたします。
もし、情報が足りない場合はご連絡ください。
自宅ドメイン → yahooへのログを見れば、eo の smtpauth.eonet.ne.jp という独自ドメインで外部へ中継してくれるSMTPサーバと間で認証に失敗しているのは容易にわかることと思います。
そこで、そこに的を絞って気になる点を上げておきます。
> Postfix の設定で行き詰まりましたので、お助けいただけますようお願いします。
> 設定でOP25B対策前の25番ポートでの環境では、うまくいったように思います。(LAN内のみのテスト)
第一に、家庭内でSMTP-AUTHのテストをしましたか? していないのであれば、とりあえず今回の現象だけでいえばこの時点で気になるのは sasl がインストールできているかです。以下で確認してみてください。
# yum list | grep sasl
> そこからOP25B対策で、行き詰まりました。
> 現在の設定は、
> /etc/postfix/main.cf において以下を追加
> relayhost = [smtpauth.eonet.ne.jp]:587
>
> smtpd_sasl_auth_enable = yes
> smtpd_sasl_local_domain = $myhostname
> smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
> smtp_sasl_auth_enable = yes
> smtp_sasl_password_maps = hash:/etc/postfix/isp_passwd
> smtp_sasl_security_options = noanonymous
> smtp_sasl_mechanism_filter = login, plain, cram-md5
書かれていませんが、当然、下記内容の/etc/postfix/isp_passwdを作成し、postmapでDB化されてますよね。
smtpauth.eonet.ne.jp ispアカウント(eouser%iris.eonet.ne.jp):ispパスワード(xxxx)
>
> /etc/postfix/master.cf において以下の#をはずし有効化
> submission inet n - n - - smtpd
> -o smtpd_etrn_restrictions=reject
> -o smtpd_sasl_auth_enable=yes
> -o smtpd_client_restrictions=permit_sasl_authenticated,reject
>
> この設定の状態で
> 自宅ドメイン → 自宅ドメイン での /var/log/maillog は
> Jun 9 10:48:37 linux postfix/local[5557]: 866E0A940112: to=<xxx@aporia.ddo.jp>, relay=local, delay=0.11, delays=0.08/0.01/0/0.02, dsn=2.0.0, status=sent (delivered to command: /usr/bin/procmail)
> となり送信したメールは受信できます。
>
> 自宅ドメイン → yahoo での /var/log/maillog は
> Jun 9 11:08:12 linux postfix/smtp[5621]: BE19AA940113: to=<xxxx@yahoo.co.jp>, relay=smtpauth.eonet.ne.jp[203.140.81.12]:587, delay=0.21, delays=0.09/0.02/0.08/0.02, dsn=5.0.0, status=bounced (host smtpauth.eonet.ne.jp[203.140.81.12] said: 503 no auth during mail transaction (#5.5.0) (in reply to MAIL FROM command))
> となり送信できたように見えますが、エラーメールが帰って木間っす。
まずは、気になるのは上記の2点でしょうか?
これで解決しないなら、大量のログがでますがPostfixの全ての動きがわかりますので、下記のように「debug_peer_list」でyahooのsmtpを設定をしてみてはどうですか? 「debug_peer_level = 2」はデフォルトで設定されているはずです。テストが終わったら戻し忘れないように。ログでHDDがつぶれます。
因みに、パスワード等も見えてしまうので、もしアップする場合は注意してください。
[main.cfに設定]
debug_peer_level = 2
debug_peer_list = smtpauth.eonet.ne.jp
おやじ 様。わらび 様。ありがとうございます。
> 当然、下記内容の/etc/postfix/isp_passwdを作成し、postmapでDB化されてますよね。
これは行っております。これは何回もチェックしました。
> 家庭内でSMTP-AUTHのテストをしましたか?
25番ポート(基本)で構築して、LAN内テストはOK,WAN側への送信はNG(当然).
そこで、わらび様の方法。つまり、25番ポートのままAUTH認証でeonetへ転送の設定を行ったところ、WAN側への送信も可能になりました。
しかし、外部(会社など)から独自ドメイン(aporia.ddo.jp)を使えませんでした。
ということで、587番ポートを使わなあかんと判断しました。
この段階で、main.cf の relayhost に :587 を付加し、
master.cf の submission のところのコメントを解除しました。
> # yum list | grep sasl
を実行しました。
cyrus-sasl.i386 2.1.22-4 installed
cyrus-sasl-lib.i386 2.1.22-4 installed
cyrus-sasl-plain.i386 2.1.22-4 installed
cyrus-sasl-devel.i386 2.1.22-4 base
cyrus-sasl-gssapi.i386 2.1.22-4 base
cyrus-sasl-ldap.i386 2.1.22-4 base
cyrus-sasl-md5.i386 2.1.22-4 base
cyrus-sasl-ntlm.i386 2.1.22-4 base
cyrus-sasl-sql.i386 2.1.22-4 base
gnu-crypto-sasl-jdk1.4.i386 2.1.0-2jpp.1 base
という結果です。
> [main.cfに設定]
> debug_peer_level = 2
> debug_peer_list = smtpauth.eonet.ne.jp
については、後ほど実行してみます。
よろしくお願いいたします。
> > 家庭内でSMTP-AUTHのテストをしましたか?
> 25番ポート(基本)で構築して、LAN内テストはOK,WAN側への送信はNG(当然).
> そこで、わらび様の方法。つまり、25番ポートのままAUTH認証でeonetへ転送の設定を行ったところ、WAN側への送信も可能になりました。
これは、下記と矛盾しますね。と思いつつもわざわざ25番を止めるか?と思い、smtpauth.eonet.ne.jpに25番でつないでみたら反応してくるので行ってしまいそうですね。
となると、下記は何ですかね? 外部から使うことを意識して敢えて587しか駄目なように書いてあるだけかもしれませんね。ただ、25で本当にうまくいったのなら、relayhost に :587 を付加して駄目になる理由は一切無いはずなので、何か勘違いされている可能性があるような気がします。
http://support.eonet.jp/mailsetting/mailsoft/mail_win/mail_win_oe/mail_win_oe60/win_oe60_subport.html
> しかし、外部(会社など)から独自ドメイン(aporia.ddo.jp)を使えませんでした。
> ということで、587番ポートを使わなあかんと判断しました。
> この段階で、main.cf の relayhost に :587 を付加し、
> master.cf の submission のところのコメントを解除しました。
これは大きな誤解をされています。下記はご覧になりましたか? OP25B対策は2つの断面があるので混乱しないようにしないと駄目です
ttp://www.aconus.com/~oyaji/mail2/op25b.htm
relayhost に :587 を付加するのは、自分SMTPサーバがISPのSMTPサーバに接続するときに587番で接続しないと駄目な場合です。
25でうまく行くなら、:587 を付加するなら必要はありません。
外部から使えない場合に必要なのが、master.cf の submission のところのコメントを解除することです。つまり自分のサーバが587で待ち受けてあげないと駄目だからです。但し、クライアント側のISPがOP25Bを導入(あるいはeoがIP25Bを導入)していなければこれは必要ありません。会社がそのような回線を使用していないなら、単に会社が587番での外部接続を規制している(これが怪しい。その対策がwebmailの導入です。)か、自分のルータで587番をポートフォワードしていなかったり、フィルタが開いていないのでは?
> > # yum list | grep sasl
> を実行しました。
> cyrus-sasl.i386 2.1.22-4 installed
> cyrus-sasl-lib.i386 2.1.22-4 installed
> cyrus-sasl-plain.i386 2.1.22-4 installed
> cyrus-sasl-devel.i386 2.1.22-4 base
> cyrus-sasl-gssapi.i386 2.1.22-4 base
> cyrus-sasl-ldap.i386 2.1.22-4 base
> cyrus-sasl-md5.i386 2.1.22-4 base
> cyrus-sasl-ntlm.i386 2.1.22-4 base
> cyrus-sasl-sql.i386 2.1.22-4 base
> gnu-crypto-sasl-jdk1.4.i386 2.1.0-2jpp.1 base
> という結果です。
これならsaslは大丈夫です。
参考:
ttp://www.aconus.com/~oyaji/bbs/wforum.cgi?no=6725&reno=no&oya=6725&mode=msgview&page=40
もちろん おやじ様の「OP25B対策」のページは何回も見ています。
でも、ポート設定の意味は、理解できていませんでした。
ISPサーバへの接続要求は、main.cf の relayhost, smtp_*** で
自宅サーバへの接続待機が、master.cf の submission と main.cf の smtpd_*** なんですね。
この切り分けが理解できてませんでした。
わらび様のアドバイス
> POP3やらないで、しばらく時間あけてもSMTPできることを確認した方がいいですね。
により 25番に戻して( relayhost=[smtpauth.eonet.ne.jp] , isp_passwd の修正 587→25)みたところ
送信できませんでした。/var/log/maillog の内容も 503 no auth でした。
(eo のページが正しい。矛盾していない。ということ)
以前のは???
isp_passwd には、ポート指定は要らないんですか?ispのauthサーバ名の指定には、[ ]が必要ですか? どのパターンもやってみましたが、特に文句(error)を言われませんでした。
ポートは587番に戻しました。
おやじ様から示して頂いた掲示板の過去ログで表示している postconf -n の結果は、以下の通りです。
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
debug_peer_level = 2
home_mailbox = Maildir
html_directory = no
inet_interfaces = all
mail_owner = postfix
mailbox_command = /usr/bin/procmail
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
message_size_limit = 10485760
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mydomain = aporia.ddo.jp
myhostname = aporia.ddo.jp
myorigin = $mydomain
newaliases_path = /usr/bin/newaliases.postfix
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix-2.3.3/README_FILES
relayhost = [smtpauth.eonet.ne.jp]:587
sample_directory = /usr/share/doc/postfix-2.3.3/samples
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
smtp_sasl_auth_enable = yes
smtp_sasl_mechanism_filter = login, plain, cram-md5
smtp_sasl_password_maps = hash:/etc/postfix/isp_passwd
smtp_sasl_security_options = noanonymous
smtpd_banner = $myhostname ESMTP unknown
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
unknown_local_recipient_reject_code = 550
となっています。
よろしくお願いいたします。
何回インストールしてもこの症状で次に進めず。
でも、もう1回最初からやってみるかな。...
OpenSuSE10 はインストール後に文字化けして進めず。
Fedora6は、CentOS5と同じでした。
Windows の XMail ならうまくいったのに...Linux用のXMailのインストールが出来ないし。yum, rpm じゃないから
> isp_passwd には、ポート指定は要らないんですか?ispのauthサーバ名の指定には、[ ]が必要ですか? どのパターンもやってみましたが、特に文句(error)を言われませんでした。
> ポートは587番に戻しました。
「ここに記載されたホストまたはドメインに一致すると、後ろで指定されたパラメータで認証する。」と書いてありますよね。従って、ポートしては不要です。
が!!! eo はとんでもないですね。mail関係にCNAMEを使っているなんて・・・。
原因はこれでしょう。isp_passwdを以下のようにホスト名を[ ]で括ってみてください。
[smtpauth.eonet.ne.jp] ispアカウント(eouser%iris.eonet.ne.jp):ispパスワード(xxxx)
これでだめなら、以下のようにAレコードにしてみてください。できれば上のほうがいいと思いますが・・。
aa0000-msas01s.eonet.ne.jp ispアカウント(eouser%iris.eonet.ne.jp):ispパスワード(xxxx)
> 何回インストールしてもこの症状で次に進めず。
> でも、もう1回最初からやってみるかな。...
> OpenSuSE10 はインストール後に文字化けして進めず。
> Fedora6は、CentOS5と同じでした。
> Windows の XMail ならうまくいったのに...Linux用のXMailのインストールが出来ないし。yum, rpm じゃないから
ほかの方がうまく言っているなら原因があるはずです。
気になるので、確認してほしいことがあります。
ISP回線内部なら、SMTPのAUTH認証無しで
SMTP送信できるのかどうかです。
POP3をやらないで(おそらく5分くらい待てばOKかな)、
SMTPでsmtpauth.eonet.ne.jpを使用して
メールが送信できるか確認してほしいです。
もちろん、eo回線内部で。
サーバじゃなくて、メーラでもいいです。
できれば、telnetを使ってプロトコルのログを
掲載してくれるとうれしいです。
そもそも今回のケースだとサブミッションポートいらいんじゃないですか?
やりたいことは、
自宅サーバから外部アドレスへのメール送信ですよね?
サブミッションを使わないといけないケースは、
外部から自宅サーバを利用して、メールを送信したいけど
外部の回線がOB25をやられて25ポートが使えない時です。
これは、WEBメールかSSLを使うなりの解決策はあります。
今回のケースなら、単純にリレーするだけです。
後は、認証の有無ですね。
さっき、eoに問い合わせちゃいました。
内部回線からは、認証無しにメール送信ができます。
なので、自宅サーバの設定は、
relayhostは25ポートで、SMTP-AUTHはいりません。
単純にスマートリレーするだけです。
いや。違うんです。
いま、仮に独自ドメイン(.ddo.jp)を使って宅内から外へ(yahoo)ですが、外部(他ISP)からも同じように使いたいんです。
だから、master.cf の submissionの設定と、main.cfのrelayhostを、きっちり動かしたいと思っています。
AUTH無しの方法もあります。
smtpauth.eonet.ne.jp の変わりに smtp.eonet.ne.jp 使えばいいはずです。
でも、smtp.eonet.ne.jp は、近い将来無くなるとアナウンスがあったように思います。??
> telnetを使ってプロトコルのログを
すみません。telnetの使い方が分かりません。具体的に教えてください。
また、今日いじっていたところ、ログが記録されなくなりました。
行数が多いんで、
rm -f /var/log/maillog
vi /var/log/maillog → :wq
としたところ、ログが記録されなくなりました。
いらんことしてもた。
...
> > telnetを使ってプロトコルのログを
> すみません。telnetの使い方が分かりません。具体的に教えてください。
ご参考
http://www.nurs.or.jp/~telnet/smtp.html
ログが記録されない件については、以下のコマンドを見つけて実行しまし、解決に至りました。
/bin/kill -HUP `cat /var/run/syslogd.pid`
現時点で、宅内から587番ポートでの送信は、
自ドメイン → yahoo
自ドメイン → eonet
自ドメイン → ezweb
宛に出来るようになりました。
今度、宅外から同宛先のテストもして見ます。
CentOS5から再インストールし直しました。
isp_passwdの内容は smtpauth.eonet.ne.jp POP-ID:POP-PASSWORD
で[ ]無しです。aa0000-msas01s.eonet.ne.jp でもありません。
再インストールする前は、そのどちらもダメでした。
なにもセットアップする方法を変えたわけでもないんですが。(^^);
すでに参考にしていたHPを見るまでも無くセットアップできます。(見てますが...)
ひと段落。
> そこで、わらび様の方法。つまり、25番ポートのままAUTH認証でeonetへ転送の設定を行ったところ、WAN側への送信も可能になりました。
あ、やっぱりできましたね。
ISP内部なら、認証必要ないみたいですね。
もしかしたら、POP3 before SMTPで認証できているかもしれないので、
POP3やらないで、しばらく時間あけてもSMTPできることを確認した方がいいですね。
> しかし、外部(会社など)から独自ドメイン(aporia.ddo.jp)を使えませんでした。
どういうエラーでダメなんですか?
コネクションができないとか、認証ができないとか・・・。
外部からメールするなら、WEBメールとかSMTPSとか、
SSHでポートフォワードしちゃうとか、Stone使っちゃうとか・・・。
もしくは、会社のSMTPサーバから独自ドメインのアドレスで送信するとかw。
> そこからOP25B対策で、行き詰まりました。
> 現在の設定は、
> /etc/postfix/main.cf において以下を追加
> relayhost = [smtpauth.eonet.ne.jp]:587
リレーするのが、使用しているISPなら
単純にSMTPでいけるんじゃないですかね?
これとか、
relayhost = [smtpauth.eonet.ne.jp]:25
AUTHなしでいけるかも。
> > そこからOP25B対策で、行き詰まりました。
> > 現在の設定は、
> > /etc/postfix/main.cf において以下を追加
> > relayhost = [smtpauth.eonet.ne.jp]:587
> リレーするのが、使用しているISPなら
> 単純にSMTPでいけるんじゃないですかね?
eo では、単純には独自ドメインは通過できません。
> これとか、
> relayhost = [smtpauth.eonet.ne.jp]:25
> AUTHなしでいけるかも。
eo で独自ドメインを使用する場合は、smtpauth.eonet.ne.jpを使用してsubmissionポートでSMTP-AUTHするしかありませんから、dratheraさんがやっているアプローチが正しいです。
結果論として、何がなんだかわからないうちにおやじのコンテンツどおりで動いてしまった。というオチですかね。
その中で、気がついたこと、おやじの勘違いしていたことを整理します。
1. OP25B対策は、自宅サーバから外部送信する場合の対処(SMTPクライアント機能:smtp_xxx関係)と、外部から自宅サーバ経由で送信する場合の対処(SMTPサーバ機能:smtpd_xxx関係)があり、まったく目的が違うものである。Submissionポートという言葉も前者ならISPのSMTPサーバが待ち受けている話であるし、後者なら自宅サーバが待ち受けている話なので、明確に区別が必要。
2. OP25B対策のうち、自宅サーバから外部送信する場合の対処方法の適用シナリオは以下が基本である。
a.通常メーラで使用するISPのSMTPサーバ経由(25番ポート)で送信してみる。
b.プロバイダによっては、通常のSMTPサーバでは独自ドメインのメールを中継してくれない場合がある。その場合は、対策として専用の中継用SMTPサーバが用意されているので、そちらに中継するようにする。
(このような中継用SMTPサーバは外部からそのプロバイダのSMTPサーバ経由で送信する場合も兼ねているケースが多いため、Submissionポート(587番)でサポートされているケースが多い。従って、不正中継対策としてSMTP-AUTHで認証が必須になっていることが多いので、サーバソフトによっては対応できないことがある。その場合は、サーバソフトを乗り換える必要がある)
3. smtp_sasl_password_maps で指定したパスワードファイルの記述は下記のように、ホスト名を[ ] でくくる必要はない。
[転送するSMTPサーバのホスト名(gateway.example.com)] ispアカウント:ispパスワード
→・[] でくくるのは、これにより MX 検索を抑え、そのマシンがドメイン名(exam-
ple.com)のプライマリ MX ホストである場合にメールルーティングのループを防止するためのものなのでop25B対策では不要。正確には盲腸であるが、くくった方がベター。おやじのCNAME云々は勘違い。
4. SMTP-AUTHのテストは下記を使用すると状況がわかる。
http://www.aconus.com/~oyaji/mail2/smtp-auth-tst.htm
5. 状況がわからない場合は、大量のログがでるが全ての動きがわかるのでdebug機能を使うとよい。(今回これを使用しなかったので、結果として原因不明のまま解決。これでほとんどの原因がローカライズできるはず。)
テストが終わったらログでHDDがつぶれたり、パスワード等も見えてしまうので戻し忘れないように。
[main.cfに設定]
debug_peer_level = 2
debug_peer_list = 転送するSMTPサーバのホスト名(gateway.example.com)
6. 作業前にconfigファイルのバックアップを取っておく。
→・Linuxは設定を弄っているぐらいでは再インストールしなければならなくなることはまずないので、何がなんだかわからなくなったらこれを戻せばよい。
・最悪はrpmを落としてきて、configファイルを削除してから強制インストール(--force)すればよい。
おやじ様。わらび様。
この度は大変親切に最後までお付き合いありがとうございました。
結果、OSの再インストールという形をとってしまいましたが、多くの有用な情報を頂き、多く勉強させていただきました。
現在, Apache, Postfix+dovecot, vsftp, ntp, DiCE等を納得のいく状態で、動くように出来ました。後もう少し脇役を充実させて公開にこぎつけたいと思います。今後もこのBBSへ問い合わせるかもしれませんが、そのときにはよろしくお願いいたします。
最後まで御親切にありがとうございました。