はじめての自宅サーバ構築 - Fedora/CentOS -
Last Update 2018/05/30
[ 更新履歴 ] [ サイト マップ ] [ 質問掲示板 ] [ 雑談掲示板 ] [ リンク ]
トップ >> トラブルシュート >> メールサーバ運用時のトラブル
動作確認 [ FC1 / FC2 / FC3 / FC4 / FC5 / FC6 / Fedora7 / Fedora8 / Fedora9 / Fedora10 / Fedora11 / Fedora12 / Fedora13 / Fedora14 / Fedora15 / Fedora16 / Fedora17 / CentOS4 / CentOS5 / CentOS6 ]
  1. メール送信できない
    全般
    携帯メールアドレスに送信できない
    OP25B(Outbound Port25 Blocking)対策
  2. メール受信できない
    特定のユーザがメール受信できない
    メール受信時にエラーが発生する
  3. サービスが起動できない

■ メール送信できない

■ 全般

当サイトは、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

■ OP25B(Outbound Port25 Blocking)対策

携帯メールアドレスに送信できない』理由と同じである 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

■ コンテンツ関連

■ その他

ページ先頭へ

Copyright(©)2004-2018 First home server construction. All Right Reserved.