-->

2011-06-29

サブミッションポート

これはsmtpサーバーではなくsmtpクライアントの設定です。
587番ポートをLISTENしません。

修正: ローカルネットワーク上の他のサーバーから25番ポートでメールを受け取って、
それをプロバイダのメールサーバーの587番ポートにリレーするような感じです。
自身は587番ポートをLISTENしません。
$ sudo netstat -anp|grep -P ":(25|587)\s"
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      6807/master

追記: amdgentooのpostfixとwindowsXPのThunderbird(メールソフト)は、
それぞれプロバイダのメールサーバーの接続情報を持っている。
他のサーバーのpostfixはamdgentooにメールを渡す。
図。
┌──────────┐  ┌──┬─────┐  ┌────┐  ┌───┬─────────────┐
│他のサーバー        ├┬┤25番│amdgentoo ├┬┤ルーター├─┤587番 │プロバイダのメールサーバー│
│relayhost=amdgentoo ││└──┴─────┘│└────┘  └───┴─────────────┘
└──────────┘│                    │
 ...                    │                    │
┌──────────┐│                    │
│他のサーバー        ├┘                    │
│relayhost=amdgentoo │                      │
└──────────┘                      │
                                              │
┌─────┐                                │
│windowsXP ├────────────────┘
└─────┘

追記: 他のサーバーはamdgentooに渡す設定のみ。
$ rcsdiff -r1.6 /etc/config-archive/etc/postfix/main.cf,v /etc/postfix/main.cf
===================================================================
RCS file: /etc/config-archive/etc/postfix/main.cf,v
retrieving revision 1.6
diff -r1.6 /etc/postfix/main.cf
76a77
> myhostname = cogentoo-1.localnet
83a85
> mydomain = localnet
315c317
< relayhost = xxx.xxx.xxx
---
> relayhost = amdgentoo.localnet

プロバイダの説明を探してメールサーバーの設定を修正します。
サブミッションポート, OP25B, ポート587 など。

現在のmain.cf。
/usr/portage/packages/mail-mta/postfix-2.7.4.tbz2のファイルとの差分。(emerge ... -b postfix)
relayhostとsmtp_sasl_auth_enable以下の記述がサブミッションポート用の変更点。
$ diff ./etc/postfix/main.cf /etc/postfix/main.cf
76a77
> myhostname = amdgentoo.localnet
83a85
> mydomain = localnet
262a265
> mynetworks = xxx.xxx.xxx.xxx/8 xxx.xxx.xxx.xxx/24
313a317
> relayhost = プロバイダのメールサーバー:587
652a657,665
>
> smtpd_milters         = unix:/var/run/clamav/clamav-milter.sock
> non_smtpd_milters     = unix:/var/run/clamav/clamav-milter.sock
> milter_default_action = accept
>
> smtp_sasl_auth_enable = yes
> smtp_sasl_mechanism_filter = plain
> smtp_sasl_password_maps = hash:/etc/postfix/saslpass
> smtp_sasl_security_options = noanonymous

デフォルト値。
$ postconf -d|grep -iP "^(smtp_sasl_auth_enable|smtp_sasl_password_maps|smtp_sasl_mechanism_filter|smtp_sasl_security_options)\s*="
smtp_sasl_auth_enable = no
smtp_sasl_mechanism_filter =
smtp_sasl_password_maps =
smtp_sasl_security_options = noplaintext, noanonymous

saslpass修正。
$ sudo vi saslpass
$ /usr/bin/sudo /usr/bin/rcsdiff /etc/config-archive/etc/postfix/saslpass,v /etc/postfix/saslpass
===================================================================
RCS file: /etc/config-archive/etc/postfix/saslpass,v
retrieving revision 1.1
diff -r1.1 /etc/postfix/saslpass
3a4
> プロバイダのメールサーバー ユーザー名:パスワード
$ sudo postmap saslpass

認証方式の確認。
$ telnet プロバイダのメールサーバー 587
Trying xxx.xxx.xxx.xxx...
Connected to プロバイダのメールサーバー.
Escape character is '^]'.
220 xxxxxxxx.example.com ESMTP
EHLO xxx.xxx.xxx.xxx           # EHLO IPアドレス などを入力する。
250-xxxxxxxx.example.com
250-PIPELINING
250-SIZE 20971520
250-ETRN
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
quit                           # 終了。quitを入力する。
221 2.0.0 Bye
Connection closed by foreign host.

この例の場合で smtp_sasl_mechanism_filter 無しの場合、
smtp_sasl_mechanism_filter = login, plain
と同じ。無しで下記を使う。
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
例えば 250-AUTH LOGIN PLAIN XXX とある場合、
smtp_sasl_mechanism_filter = XXX にしても良いです。
もしくは smtp_sasl_security_options に noplaintext を追加します。

他のlinuxは relayhost = amdgentoo.localnet を経由し、windowsは直接同じような指定をしています。

MX検索を無効にする場合。+ポートを文字にする場合。
$ rcsdiff -r1.11 /etc/config-archive/etc/postfix/main.cf,v /etc/postfix/main.cf
===================================================================
RCS file: /etc/config-archive/etc/postfix/main.cf,v
retrieving revision 1.11
diff -r1.11 /etc/postfix/main.cf
317c317
< relayhost = プロバイダのメールサーバー:587
---
> relayhost = [プロバイダのメールサーバー]:submission
$ grep 587 /etc/services
submission      587/tcp                         # mail message submission
submission      587/udp

他。
送信者単位での認証(smtp_sender_dependent_authentication = yes)、
プロバイダごとのsmtpサーバーを直接指定など(/etc/postfix/transport)

参考URL。
http://www.postfix-jp.info/trans-2.2/jhtml/postconf.5.html
http://www.postfix.org/postconf.5.html#smtp_sasl_mechanism_filter
http://kazuizm.com/2006/12/28-072720.php
http://statphys.scphys.kyoto-u.ac.jp/~akihiko/linux/docomo.html
http://www.ecoop.net/memo/2007-03-31-1.html
http://www.aconus.com/~oyaji/mail2/op25b.htm
http://www.geocities.jp/yukke_no_kobeya/kurobako/fe8_130.html
http://www.postfix-jp.info/trans-2.3/jhtml/SASL_README.html#client_sasl
http://www.melnikov.ca/mel/devel/SASL_info.html
http://gmt-24.net/archives/181
http://www.itscom.net/support/security/op25b/submission.html
http://www.itscom.net/support/setup/internet/mailer/sub_smtp_thunderbird2_its.html
http://www.postfix-jp.info/trans-2.3/jhtml/postconf.5.html#smtp_sender_dependent_authentication
http://www.postfix-jp.info/trans-2.3/jhtml/transport.5.html

0 件のコメント: