[最終更新:2007/01/03]

安全なメールサーバーの設定

安全なメールサーバーを構築するのに必要な要素は、メールサーバー自体のセキュリティとともに、メールを通信手段とする危険性から身を守ること、すなわちメールを手段とするウィルスやスパムメからの安全性を確保することが必要となる。
そこで以下の設定を施すこととした。

  1. メールサーバーをデフォルトの sendmail から postfix に変更。
  2. postfix で受信したメールは、amavisd に移動させ、ここでウィルスチェックを施し、感染メールは捨て、感染していないメールのみ postfix に戻す。
  3. スパムメールの判定を bsfilter と spamassassin でチェックする。
  4. スパムチェックされたメールをユーザーの設定した規則に従って procmail が振り分ける。
参考にしたのは、日経Linux 2006年9月号、11月号であるが、バックナンバーはもちろん、インターネットからもその記事を購入(有料)できる。

このページでは、1 の sendmail から postfix に変更し、その設定を行うという、メールサーバーの基本的な設定を扱い、それ以降については次項で記載する。

1、Postfix、Procmail のインストールと設定

■Postfix Procmail のインストール
# yum install system-switch-mail postfix procmail ← procmailはすでにインストールされていた。
# /usr/sbin/alternatives --config mta ← デフォルトのメールサーバーをPostfixに変更する。番号で利用する Postfix を MTA として選択する。
# /etc/init.d/sendmail stop ← sendmailの停止
# /sbin/chkconfig sendmail off

■Postfix の設定
# cp /etc/postfix/main.cf /etc/postfix/main.cf.org ←設定ファイルのバックアップをとっておく。
# vi /etc/postfix/main.cf
myhostname = libretto.e-sen.com ← #をはずし、FQDN を設定。
myhostname = e-sen.com
mydomain = e-sen.com ← #をはずし、ドメインを設定。
myorigin = $mydomain ← ローカルからの送信の際に、@の後に付加するドメイン名またはホスト名
inet_interfaces = all ← メールの受信制限をはずし、どこからでも受信できるようにする。
# inet_interfaces = localhost ←上で all を選択したので、#を付けて無効にする。
mydestination = $myhostname, local.$mydomain, localhost,$mydomain ← メールヘッダーの To: の@の後の設定。上の設定で @ libretto.e-sen.com あるいは @local.e-sen.com あるいは @localhost あるいは @e-sen.com ならば自分のメールだと認識する。
mydestination = #mydomain, $myhostname
home_mailbox = Maildir/ ← 1つのメールを1つのファイルで保存する。
mailbox_command = /usr/bin/procmail ←メール配信を procmail に任せる。
mynetworks = 192.168.0.0/24, 127.0.0.0/8 ← このアドレス以外のホストからのリレーを許可しない。※セキュリティー上大変重要

:wq ← 保存して終了

■一般ユーザーのディレクトリーの設定
# mkdir /home/一般ユーザー名/Maildir ← 一般ユーザーのディレクトリーを作る。
# chmod 700 /home/一般ユーザー名/Maildir ← そのディレクトリーのパーミッションを 700 に 変更する。
# chown -R 一般ユーザー名:一般ユーザーグループ名 /home/一般ユーザー名/Maildir ← そのディレクトリーの所有を一般ユーザーにする。
# /etc/init.d/postfix start ← postfix を起動。
# /sbin/chkconfig postfix on ← 次回から自動的に立ち上がるように設定。

■メールの送信テスト
# mail 一般ユーザ名@localhost ←宛先
Subject : This is a Test Mail ←メールの表題
This is a test mail from root ←メールの本文を入力し、Enter キーを押す。
←本文を入力し終えたら Ctrl + D を押す。
Cc: ←何も入力せず enter キーを押す。

2、IMAPサーバーとして Dovecot を導入

# yum install dovecot
すでにインストールされていた。
# cp /etc/dovecot.conf /etc/dovecot.conf.org ←設定ファイルのバックアップをとっておく。
# vi /etc/dovecot.conf ←設定ファイルを編集。
protocols = imap ← プロトコルを imap に設定。
:wq ←保存して終了

# /etc/init.d/dovecot start ← dovecot を起動。
# /sbin/chkconfig dovecot on ←次回より自動的に立ち上げる。

3、外出先からメールを送受信可能に

以上の設定で基本的な設定は終了し、メールを受け取り、ユーザーディレクトリーに配信し、Thunderbird などの IMAP クライアントから読み出すことが可能になった。送信はどうであろう ? 自宅にいる限りは、postfix の mynetworks で設定したネットワークからの送信となるので、送信可能だ。しかしこのままでは、外出先からメールを読み返事を書こうと思っても、postfix が転送してくれない。なぜなら、外出先では mynetworks 以外のネットワークで送信せざるを得ないからだ。そこで、web メールを導入しておこう。

■ squirrelmail のインストール
# yum install httpd php squirrelmail ← web メールは squirrelmail だが、これは Web サーバー上動作するアプリケーションでしかも PHP 言語を使用するので、Apache HTTP Server と PHP もインストールする。すでにインストールされているかもしれないが、念のため。すでにインストールされていてもバージョンアップがあると自動的にアップしてくれるので便利。
# vi /var/www/html/phpinfo.php ← PHP が正常に稼働するか、テストファイルを phpinfo.php という名前で作成。
<?php
phpinfo ();
?>
:wq ←保存して終了

# /etc/init.d/httpd restart

WEBブラウザからhttp://localhost/phpinfo.php にアクセス。
正常に表示できれば、PHPが正常に動作していることになる。次に squirrelmail の設定に移ろう。

■ squirrelmail の設定
# cd /usr/share/squirremail/config
# ./conf.pl

まず、C を入力してカラーモードをオフにする。
2を入力して「 Server Settings 」を選択。
3を入力 Sendmail から SMTP に変更。
Aを入力して、IMAPサーバーの設定を変更する。8を入力 Server software を other に変更。
9を入力 Delimiter ( フォルダーの区切り文字 )を「 . 」(ピリオド)に変更。

Rを入力して最初の画面に戻ったら、
10「 Languages 」を選択して、次の画面で1「 Default Languages 」で ja_JP と入力。

これで設定は完了。
SとQを入力、保存し終了する。

# /etc/init.d/httpd restart ← apache がすでに起動していても、再起動しないと認識されない。

WEBブラウザからhttp://localhost/webmailにアクセス。
ログイン画面が表示されれば設定が完了。

一般ユーザー名とパスワードを入力するとログインできる。
うまく稼働していれば、先ほど送信したテストメールが届いているはず。
ちなみに上記のテストメールのヘッダーは以下の通りである。
Return-Path: <root@e-sen.com>
X-Original-To: 一般ユーザー名@localhost
Delivered-To: 一般ユーザー名@localhost.e-sen.com
Received: by libretto.e-sen.com (Postfix, from userid 0)
id 71AF060038; Sun, 3 Dec 2006 19:31:06 +0900 (JST)
To: 一般ユーザー名@localhost.e-sen.com
Subject: This is test mail
Message-Id: <20061203103106.71AF060038@libretto.e-sen.com>
Date: Sun, 3 Dec 2006 19:31:06 +0900 (JST)
From: root@e-sen.com (root)

スパムフィルターの設定
ウィルスフィルターの設定
CentOS 4.4 のトップ