当サイトは、FedoraCore2 時代からの構築方が紹介されており、この時のpostfixは
Ver2.0系でした。
またTLSを使用しているので、「/etc/postfix/main.cf」の中に「smtpd_tls_session_cache_database」が定義されています。
この時のタイプは「sdbm」なのですが、postfix Ver2.2からは「sdbm」を別途インストールする事によりサポートされます。
ちなみに、設定は現行のままでpostfix Ver2.2で起動するとログには以下の様に出力されサポートしていない為、起動こそ出来ますがメール送信する事が出来ません。
メールログのエラー部分 Sep 30 16:43:29 svr postfix/tlsmgr[4182]: fatal: unsupported dictionary type: sdbm Sep 30 16:43:30 svr postfix/master[4146]: warning: process /usr/libexec/postfix/tlsmgr pid 4182 exit status 1 Sep 30 16:43:30 svr postfix/master[4146]: warning: /usr/libexec/postfix/tlsmgr: bad command startup -- throttling Sep 30 16:45:16 svr postfix/smtpd[7196]: warning: SASL authentication failure: no secret in database Sep 30 16:45:16 svr postfix/smtpd[7196]: warning: hogehoge.co.jp[xxx.xxx.xxx.xxx]: SASL CRAM-MD5 authentication failed Sep 30 16:45:16 svr postfix/smtpd[7196]: NOQUEUE: reject: RCPT from hogehoge.co.jp[xxx.xxx.xxx.xxx]: 554 <[email protected]> : Relay access denied; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<[172.16.1.111]> Sep 30 16:45:19 svr postfix/smtpd[7196]: disconnect from hogehoge.co.jp[xxx.xxx.xxx.xxx] 「sdbm」を「btree」に変更する # vi /etc/postfix/main.cf コメントアウト #smtpd_tls_session_cache_database = sdbm:/etc/postfix/smtpd_scache btreeで追加 smtpd_tls_session_cache_database = btree:/etc/postfix/smtpd_scache postfixの再起動 【FC1 から Fedora15 / CentOS4 / CentOS5 / CentOS6 の場合】 # /etc/rc.d/init.d/postfix restart 【Fedora16以降 の場合】 # systemctl restart postfix.service |
上記の規制にかかり、一般宛てへのメールは送信できるのに携帯メールアドレスには送信(受信)できない場合があります。
この様な場合は自分が契約しているISPのMTAで配送する様に変更すれば、解消できる場合があります。
postfix設定ファイル修正 # vi /etc/postfix/main.cf 最終行に以下を追加 transport_maps = hash:/etc/postfix/transport 転送設定 # vi /etc/postfix/transport docomo.ne.jp :[mail.xxx.ne.jp] .docomo.ne.jp :[mail.xxx.ne.jp] 「:」を境に左側を配送相手のドメイン名 右側を自分が契約しているISPの送信サーバ(SMTP)に設定する。 上記の様に、複数ある場合は次行に追加して行く事 *:上記の例は、「docomo.ne.jp」ドメイン(docomo携帯)宛への配送は「mail.xxx.ne.jp」のMTAで配送する設定となります。 設定内容を有効にする # postmap /etc/postfix/transport postfixの再起動 【FC1 から Fedora15 / CentOS4 / CentOS5 / CentOS6 の場合】 # /etc/rc.d/init.d/postfix restart 【Fedora16以降 の場合】 # systemctl restart postfix.service |
『携帯メールアドレスに送信できない』理由と同じである OP25 によって、今まで送信できていたのに突然送れなくなってしまった場合は以下の設定も試みて下さい。
以下の設定は、「submission port」と言って「port 25」の換わりに「port 587」を使用して配送します。
postfix設定ファイル修正 # vi /etc/postfix/master.cf # ========================================================================== # service type private unpriv chroot wakeup maxproc command + args # (yes) (yes) (yes) (never) (100) # ========================================================================== smtp inet n - n - - smtpd 以下のコメントを取り有効にする submission inet n - n - - smtpd -o smtpd_enforce_tls=yes -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject #smtps inet n - n - - smtpd # -o smtpd_tls_wrappermode=yes # -o smtpd_sasl_auth_enable=yes # -o smtpd_client_restrictions=permit_sasl_authenticated,reject postfixの再起動 【FC1 から Fedora15 / CentOS4 / CentOS5 / CentOS6 の場合】 # /etc/rc.d/init.d/postfix restart 【Fedora16以降 の場合】 # systemctl restart postfix.service portの確認 # nmap localhost Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2007-02-25 07:44 JST Interesting ports on localhost.localdomain (127.0.0.1): Not shown: 1665 closed ports PORT STATE SERVICE 22/tcp open ssh : : : 587/tcp open submission 「nmap」コマンドが実行できない場合は、以下を実施してインストールする必要があります。 # yum -y install nmap |
「-o smtpd_enforce_tls=yes」を指定する事により、暗号化されたセッションを確立し通信します。
この時、EHLO(SMTPセッションの開始)の後にSTARTTLSが開始されない場合はエラーとなって通信する事ができません。
また、STARTTLSを行うには、サーバ側に証明書が必要になります。
OP25B対策を行っているISPの中には、本来のSMTPポート(25)を(587)に変更しただけと言うのもあります。
この様な場合は、逆にSTARTTLSのせいで通信できなくなってしまう事になります。
自身のISPがどの様な OP25B 対策を行っているかを知るには難しいので、TLSの使用をしない事により、Port587で25と同等の通信をさせてみて下さい。
上記の「-o smtpd_enforce_tls=yes」部分をコメント化し、postfixサービスを再起動するだけで可能です。
この他、Port25を使用しないで、かつ、暗号化通信する事で送信する事も可能です。
いわゆる、送信ポートが(25)→(465)に切り替える事で、あっさりと通信できます。
参考:通信内容暗号化(OpenSSL & mod_SSL) 〜 メール編 〜
alias(アカウント名を別名にする)に設定されているアカウントがある場合は、以下の様に変更しないと別名のアカウントに転送されています。
結果、サーバで正常に受信しているにも関わらず、メールが取れないといった状況になってしまいます。
以下のファイルの「:」の左側のアカウント名が右側のアカウント名に別名定義されています。
例)webmaster: root
webmasterが別名でrootとなっている。よって、webmaster宛てのメールはrootに転送(移動)されます。
別名ファイルの変更 # vi /etc/aliases # # Aliases in this file will NOT be expanded in the header from # Mail, but WILL be visible over networks or from /bin/mail. # # >>>>>>>>>> The program "newaliases" must be run after # >> NOTE >> this file is updated for any changes to # >>>>>>>>>> show through to sendmail. # # Basic system aliases -- these MUST be present. mailer-daemon: postmaster postmaster: root # General redirections for pseudo accounts. bin: root daemon: root adm: root lp: root sync: root shutdown: root halt: root mail: root news: root uucp: root operator: root games: root gopher: root ftp: root nobody: root radiusd: root nut: root dbus: root vcsa: root canna: root wnn: root rpm: root nscd: root pcap: root apache: root webalizer: root dovecot: root fax: root quagga: root radvd: root pvm: root amanda: root privoxy: root ident: root named: root xfs: root gdm: root mailnull: root postgres: root sshd: root smmsp: root postfix: root netdump: root ldap: root squid: root ntp: root mysql: root desktop: root rpcuser: root rpc: root nfsnobody: root ingres: root system: root toor: root manager: root dumper: root abuse: root newsadm: news newsadmin: news usenet: news ftpadm: ftp ftpadmin: ftp ftp-adm: ftp ftp-admin: ftp www: webmaster webmasterアカウント宛にメールが届くようにする。(コメントアウトする) #webmaster: root noc: root security: root hostmaster: root info: postmaster marketing: postmaster sales: postmaster supportアカウント宛のメールはwebmasterに転送(移動)させる コメントアウト #support: postmaster webmasterとして別名定義 support: webmaster # trap decode to catch security attacks decode: root # Person who should get root's mail rootアカウント宛のメールはlinuxに転送(移動)させる #root: marc linuxとして別名定義 root: linux 修正した内容を反映する # newaliases |
メールソフトで受信を行ってもタイムアウト等が発生しメールの受信ができない場合は、サーバのメールログを確認してみてください。
*:以下、メール受信時に出力された内容「/var/log/maillog」
【POP3 受信時のメッセージ】 Dec 10 17:15:23 centos dovecot: pop3-login: pop3-login: error while loading shared libraries: libsepol.so.1: failed to map segment from shared object: Cannot allocate memory 【IMAP 受信時のメッセージ】 Dec 10 17:17:23 centos dovecot: imap-login: imap-login: error while loading shared libraries: libsepol.so.1: failed to map segment from shared object: Cannot allocate memory |
上記のエラーの場合、「dovecot」設定ファイルを以下の様に変更しサービスを再起動します。
「dovecot」設定ファイルの変更 # vi /etc/dovecot.conf # Set max. process size in megabytes. If you don't use # login_process_per_connection you might need to grow this. #login_process_size = 32 login_process_size = 64 「dovecot」サービスの再起動 【FC1 から Fedora14 / CentOS4 / CentOS5 / CentOS6 の場合】 # /etc/rc.d/init.d/dovecot restart 【Fedora15以降 の場合】 # systemctl start dovecot.service ※:現在のdovecot(Ver2)ではこの問題は修正されている様です。(確定情報ではありません) |
SMTPサービス(postfix)の設定に問題がないにもかかわらず、サービス起動しても直ぐに終了(停止)してしまう場合は、「sendmail」サービスが既に起動している場合があります。
*:以下、postfixサービスを起動した時にメッセージ出力された内容
Oct 30 17:45:32 www postfix/master[4879]: fatal: bind 0.0.0.0 port 25: Address already in use |
この様な場合、「sendmail」サービスを停止し、「postfix」を再度起動してみて下さい。
【FC1 から Fedora15 / CentOS4 / CentOS5 / CentOS6 の場合】 「sendmail」サービスの停止 # /etc/rc.d/init.d/sendmail stop システム再起動後に「sendmail」サービスが起動しないようにする # chkconfig sendmail off 「postfix」サービスの起動 # /etc/rc.d/init.d/postfix start 【Fedora16以降 の場合】 「sendmail」サービスの停止 # systemctl stop sendmail.service システム再起動後に「sendmail」サービスが起動しないようにする # systemctl disable sendmail.service 「postfix」サービスの起動 # systemctl start postfix.service |