広告

検索

RSS RSSフィード

カレンダー

2009年4月
« 3月   5月 »
 12345
6789101112
13141516171819
20212223242526
27282930  

カテゴリー

最新のコメント

リンク

自宅サーバー再構築 その22 CentOS 5.3 メールサーバー構築(公開編)

投稿者:yasu 更新日時:2009年4月21日 21時55分00秒
カテゴリCentOS, dovecot, Linux, postfix, 自宅サーバー

前回に引き続いてメールサーバーの設定を行っていきます。
今回はメールサーバーの外部公開を行います。

SendMailサービス停止とデフォルトメールサーバー変更

CentOSのデフォルトメールサーバーはSendMailですので、Postfixに切り替えます。

SendMailサービスを停止します
[root@centos ~]# /etc/rc.d/init.d/sendmail stop
sendmailを停止中: [ OK ]
sm-clientを停止中: [ OK ]

SendMailサービスの自動起動設定を解除します
[root@centos ~]# chkconfig sendmail off
[root@centos ~]# chkconfig --list sendmail
sendmail 0:off 1:off 2:off 3:off 4:off 5:off 6:off

デフォルトメールサーバーをsendmailからpostfixに変更します
[root@centos ~]# alternatives --config mta
2 プログラムがあり 'mta' を提供します。

選択 コマンド
-----------------------------------------------
*+ 1 /usr/sbin/sendmail.sendmail
2 /usr/sbin/sendmail.postfix

Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:2

ファイアウォールの設定変更

[root@centos ~]# vi /etc/sysconfig/iptables
viエディタが起動するので設定ファイルを変更します。
# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
下記1行を追加してTCPの25番ポート(smtp)を開放します
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
下記4行を追加してTCPの110番ポート(pop)とTCPの143番ポート(imap)を開放します。
IP制御をしてローカルネットワーク内と特定の外部からのみ接続できるようにします

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 110 -s 192.168.0.0/24 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 110 -s xxx.xxx.xx.xx(外部IPアドレス)/24 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 143 -s 192.168.0.0/24 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 143 -s xxx.xxx.xx.xx(外部IPアドレス)/24 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited

内容を保存しviエディタを終了します

設定内容を反映します
[root@centos ~]# /etc/rc.d/init.d/iptables restart
ファイアウォールルールを適用中: [ OK ]
チェインポリシーを ACCEPT に設定中filter [ OK ]
iptables モジュールを取り外し中 [ OK ]
iptables ファイアウォールルールを適用中: [ OK ]
iptables モジュールを読み込み中ip_conntrack_netbios_ns [ OK ]

PostfixとSMTP-Auth、Dovecotサービスの起動およびOS再起動時の自動起動設定

Postfix(送信メールサーバー)、SMTP-Auth(送信メールサーバーユーザ認証)、Dovecot(受信メールサーバー)のサービスを起動し、OS再起動時にもサービスを自動起動するようにします。

Postfixの起動
[root@centos ~]# /etc/rc.d/init.d/postfix start
postfix を起動中: [ OK ]

OS再起動時にPostfixを自動起動するようにします
[root@centos ~]# chkconfig postfix on
[root@centos ~]# chkconfig --list postfix
postfix 0:off 1:off 2:on 3:on 4:on 5:on 6:off

SMTP-Authの起動
[root@centos ~]# /etc/rc.d/init.d/saslauthd start
saslauthd を起動中: [ OK ]

OS再起動時にSMTP-Authを自動起動するようにします
[root@centos ~]# chkconfig saslauthd on
[root@centos ~]# chkconfig --list saslauthd
saslauthd 0:off 1:off 2:on 3:on 4:on 5:on 6:off

Dovecotの起動
[root@centos ~]# /etc/rc.d/init.d/dovecot start
Dovecot Imap を起動中: [ OK ]

OS再起動時にDovecotを自動起動するようにします
[root@centos ~]# chkconfig dovecot on
[root@centos ~]# chkconfig --list dovecot
dovecot 0:off 1:off 2:on 3:on 4:on 5:on 6:off

telnetでSMTP-Authの設定を確認

telnetコマンドでSMTP-Authが正しく設定されているか確認します。

[root@centos ~]# telnet localhost 25
Trying 192.168.0.20...
Connected to mail.sa-sa-ki.jp (192.168.0.20).
Escape character is '^]'.
Connection closed by foreign host.
[root@centos ~]#

telnetで25番ポートに接続した瞬間に切断されてしまいました。
ログを調べてみます。

[root@centos
~]# view /var/log/maillog
Apr 3 17:05:24 centos postfix/smtpd[9767]: warning: xsasl_cyrus_server_get_mechanism_list: no applicable SASL mechanisms
Apr 3 17:05:24 centos postfix/smtpd[9767]: fatal: no SASL authentication mechanisms
Apr 3 17:05:25 centos postfix/master[9762]: warning: process /usr/libexec/postfix/smtpd pid 9767 exit status 1
Apr 3 17:05:25 centos postfix/master[9762]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling

・warning: xsasl_cyrus_server_get_mechanism_list: no applicable SASL mechanisms
・fatal: no SASL authentication mechanisms
警告やエラーが発生していました。
インターネットで調べてみたところDevelog - Linux,MySQL,PHP,SEO,Debian,PEAR,Smarty,Blog -:【CentOS5 Postfix】SASLを利用したSMTP-AUTHで認証エラーに対応策が出ていました。
SMTP-AUTHに必要なモジュールが足りなかったようなので追加します。

現在インストールされているSMTP-Auth関連のパッケージを調べます
[root@centos ~]# yum list | grep sasl*
cyrus-sasl.i386 x.x.xx-x installed
cyrus-sasl-lib.i386 x.x.xx-x installed
cyrus-sasl-plain.i386 x.x.xx-x installed
cyrus-sasl-devel.i386 x.x.xx-x base
cyrus-sasl-gssapi.i386 x.x.xx-x base
cyrus-sasl-ldap.i386 x.x.xx-x base
cyrus-sasl-md5.i386 x.x.xx-x base
cyrus-sasl-ntlm.i386 x.x.xx-x base
cyrus-sasl-sql.i386 x.x.xx-x base

メール送信の認証方法はチャレンジ・レスポンス型認証に指定しているのですが、チャレンジ・レスポンス型認証に必要な[cyrus-sasl-md5]がインストールされていませんでしたので追加します。

cyrus-sasl-md5をインストールします
[root@centos ~]# yum -y install cyrus-sasl-md5
Loaded plugins: fastestmirror, priorities
Loading mirror speeds from cached hostfile
* base: www.ftp.ne.jp
* updates: ftp.twaren.net
* addons: www.ftp.ne.jp
* extras: www.ftp.ne.jp
Setting up Install Process
Parsing package install arguments
Resolving Dependencies
--> Running transaction check
---> Package cyrus-sasl-md5.i386 0:x.x.xx-x set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

====================================================================================================================================
Package Arch Version Repository Size
====================================================================================================================================
Installing:
cyrus-sasl-md5 i386 x.x.xx-x base 45 k

Transaction Summary
====================================================================================================================================
Install 1 Package(s)
Update 0 Package(s)
Remove 0 Package(s)

Total download size: 45 k
Downloading Packages:
cyrus-sasl-md5-x.x.xx-x.i386.rpm | 45 kB 00:00
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : cyrus-sasl-md5 [1/1]

Installed: cyrus-sasl-md5.i386 0:x.x.xx-x
Complete!

再度telnetコマンドでSMTP-Authが正しく設定されているか確認します
[root@centos ~]# telnet localhost 25
Trying 127.0.0.1...
Connected to centos.sa-sa-ki.jp (127.0.0.1).
Escape character is '^]'.
220 mail.sa-sa-ki.jp ESMTP unknown
EHLO local

EHLOコマンドを入力したのですが応答が返ってきません。
再度ログファイルを確認します。

[root@centos ~]# view /var/log/maillog
Apr 3 17:35:37 centos postfix/smtpd[4521]: fatal: open database /etc/postfix/access.db: No such file or directory
Apr 3 17:35:38 centos postfix/master[4451]: warning: process /usr/libexec/postfix/smtpd pid 4521 exit status 1
Apr 3 17:35:38 centos postfix/master[4451]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling

/etc/postfix/access.dbファイルが開けないと警告がでています。
これはpostfixの設定ファイルmain.cfに追記したsmtpd_client_restrictionsパラメタのcheck_client_access hash:/etc/postfix/accessのデータベースファイルがない為に警告がでているのでデータベースファイルを作成します。
同様にsmtpd_sender_restrictionsパラメタのcheck_sender_access hash:/etc/postfix/reject_senderもデータベースファイル(データベースファイルを作成する元のテキストファイルも)がないので作成します。

[root@centos ~]# postmap /etc/postfix/access
[root@centos ~]# touch /etc/postfix/reject_sender
[root@centos ~]# postmap /etc/postfix/reject_sender

再度telnetコマンドでSMTP-Authが正しく設定されているか確認する前にpostfixとsaslauthdのサービスを再起動します
[root@centos ~]# /etc/rc.d/init.d/postfix start
postfix を停止中: [ OK ]
postfix を起動中: [ OK ]

[root@centos ~]# /etc/rc.d/init.d/saslauthd start
saslauthd を停止中: [ OK ]
saslauthd を起動中: [ OK ]

再度telnetコマンドでSMTP-Authが正しく設定されているか確認します
[root@centos ~]# telnet localhost 25
Trying 127.0.0.1...
Connected to centos.sa-sa-ki.jp (127.0.0.1).
Escape character is '^]'.
220 mail.sa-sa-ki.jp ESMTP unknown
EHLO local
250-mail.sa-sa-ki.jp
250-PIPELINING
250-SIZE 10240000
250-ETRN
250-AUTH DIGEST-MD5 CRAM-MD5が表示されていればSMTP-Authの設定は正常です
250-AUTH DIGEST-MD5 CRAM-MD5
250-AUTH=DIGEST-MD5 CRAM-MD5
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN

QUIT
221 2.0.0 Bye
Connection closed by foreign host.

ルータの設定を変更してTCPの25番、110番、143番ポート開放

開放方法はルータの設定手順に従って実施してください。

次回はSSLの設定を行います。

■ 参考サイト ■
はじめての自宅サーバ構築 Fedora/CentOS - メールサーバ(SMTP)の構築(Postfix)
メールサーバー構築(Postfix+Dovecot) - CentOSで自宅サーバー構築
Postfix設定パラメータ
dovecotでCRAM-MD5認証を使えるようにする - あれだよ、あれ……なんだっけ?

■関連記事
自宅サーバー再構築 その1 導入を検討する
自宅サーバー再構築 その2 CentOS 5.2 をインストールする
自宅サーバー再構築 その3 インストールしたCentOS 5.2 にリモート接続準備
自宅サーバー再構築 その4 CentOS 5.2 インストール後の初期設定
自宅サーバー再構築 その5 CentOS 5.2 ファイル転送準備
自宅サーバー再構築 その6 CentOS 5.2 にアンチウィルスソフトを導入する
自宅サーバー再構築 その7 CentOS 5.2 にファイル改竄検知システムを導入する
自宅サーバー再構築 その8 CentOS 5.2 にrootkit検知ツールを導入する
自宅サーバー再構築 その9 CentOS 5.2 にバッファオーバーフロー攻撃対策を行う
自宅サーバー再構築 その10 CentOS 5.2 SSHサーバーを構築して外部からリモート接続&リモートファイル転送
自宅サーバー再構築 その11 CentOS 5.2 にDNSサーバーを導入して名前解決(設定編)
自宅サーバー再構築 その12 CentOS 5.2 にDNSサーバーを導入して名前解決(確認編)
自宅サーバー再構築 その13 CentOS 5.2 にLAMP環境構築(Apache、PHP編)
自宅サーバー再構築 その14 CentOS 5.2 にLAMP環境構築(MySQL編)
自宅サーバー再構築 その15 Apacheにサーバー証明書を導入する
自宅サーバー再構築 その16 CentOS 5.2 にWordPressを導入してブログサイトを構築する
自宅サーバー再構築 その17 WordPressのセキュリティ対策
自宅サーバー再構築 その18 CentOS 5.3 にNTPサーバーを導入して自動時間合わせ
自宅サーバー再構築 その19 CentOS 5.3 アンチウィルスソフトのバージョンアップ
自宅サーバー再構築 その20 CentOS 5.3 メールサーバー構築(Postfix設定編)
自宅サーバー再構築 その21 CentOS 5.3 メールサーバー構築(Dovecot設定編)
自宅サーバー再構築 その22 CentOS 5.3 メールサーバー構築(公開編)
自宅サーバー再構築 その23 CentOS 5.3 メールサーバー構築(SSL導入編)
自宅サーバー再構築 その24 CentOS 5.3 メールサーバー構築(メールアカウント作成編)
自宅サーバー再構築 その25 CentOS 5.3 メールサーバー構築(Thunderbird設定編)
自宅サーバー再構築 番外編その1 CentOS 5.3 のリリースと導入済みソフトウェアのアップデート


“自宅サーバー再構築 その22 CentOS 5.3 メールサーバー構築(公開編)”にコメントはありません

コメントする