■概要 |
プロバイダなどから Fetchmail (メールの受信) ↓ Postfix (メールサーバー) ↓ Procmail SpamAssassin & bsfilter (スパム・メールのフィルタリングと携帯への転送) ↓ メール・スプール ↓ Dovecot (IMAPサーバー) ↓ メールを読む SquirrelMail (Webメーラー) |
■使用するパッケージがインストールされているかの確認
# rpm -q sendmail postfix sendmail-8.13.4-2 postfix-2.2.2-2 # rpm -q dovecot dovecot-0.99.14-4.fc4 # rpm -q procmail procmail-3.22-16 # rpm -q spamassassin spamassassin-3.0.3-4.fc4 # rpm -q fetchmail fetchmail-6.2.5-7 |
■設定 Postfix (メールサーバー) Dovecot (IMAPサーバー) Procmail (メール振り分け) SpamAssassin & bsfilter (スパム対策) Fetchmail (メールの受信) |
(1) root権限に切り替え
[d1@localhost ~]$ su - Password: |
(2) sendmailの停止
[root@localhost ~]# /etc/rc.d/init.d/sendmail stop sendmail を停止中: [ OK ] sm-client を停止中: [ OK ] |
(3) MTAの切り替え sendmail -> postfix
[root@localhost ~]# alternatives --config mta ← CUI
[root@localhost ~]# system-switch-mail ← GUI
|
(4) Postfixの起動
[root@localhost ~]# /etc/rc.d/init.d/postfix start postfix を起動中: [ OK ] [root@localhost ~]# chkconfig postfix on [root@localhost ~]# chkconfig --list postfix postfix 0:off 1:off 2:on 3:on 4:on 5:on 6:off |
(5) Postfixの設定
[root@localhost ~]# vi /etc/postfix/main.cf1. FQDN の設定を無効にする。ローカルでのみの使用の為。
#myhostname = host.domain.tld
#myhostname = virtual.domain.tld
初期状態のままでよい
関係のありそうな項目
このメールシステムのインターネットホスト名。
このメールシステムのインターネットドメイン名。
ドメイン名で、ローカルで投函されたメールはそこから来たように見え、またローカルで投かんされたメールはそこに配送されます。
inet_interfaces = all
#inet_interfaces = $myhostname
#inet_interfaces = $myhostname, localhost
#inet_interfaces = localhost
localhost を無効にし all を有効にする
関係のありそうな項目
このメールシステムがメールを受け取るネットワークインターフェースアドレス。 mydestination = $myhostname, localhost.$mydomain, localhost #mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain #mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain, # mail.$mydomain, www.$mydomain, ftp.$mydomain 初期状態のままでよい relay_domains = $mydestination 初期状態のままでよい関係のありそうな項目
$local_transport メール配送 transport を使って配送されるドメインのリスト。
このシステムがメールをリレーしようとする配送先のドメイン (およびそのサブドメイン)。 #mynetworks_style = class mynetworks_style = subnet #mynetworks_style = host 初期状態のままでよい mynetworks = 192.168.1.0/24, 127.0.0.0/8 上記のように変更する関係のありそうな項目
mynetworks パラメータのデフォルト値を生成する方法。
"よそ者" よりも多くの権限を持つ "信頼された" SMTPクライアントのリスト。
#home_mailbox = Mailbox
home_mailbox = Maildir/
Maildir/ を有効にする
関係のありそうな項目
オプションのメールボックスファイルの local(8) ユーザのホームディレクトリからの相対パス名。
mailbox_command = /usr/bin/procmail
上記のように変更する
関係のありそうな項目
メールボックス配送に local(8) 配送エージェントが使う、オプションの外部コマンド。
smtpd_banner = $myhostname ESMTP
上記のように変更する
関係のありそうな項目
SMTP グリーティングバナーで 220 状態コードの後に続くテキスト。
message_size_limit = 10240000
mailbox_size_limit = 51200000
最後らへんに追記
関係のありそうな項目
エンベロープ情報を含む、バイト単位のメッセージの最大サイズ。
local(8) の個々のメールボックスまたは maildir の最大サイズ、もしくはゼロ (制限なし)。
smtpd_helo_required = yes
disable_vrfy_command = yes
最後らへんに追記
関係のありそうな項目
リモートSMTPクライアントが SMTP セッションの最初で HELO または EHLO コマンドで自己紹介することを要求します。
SMTP VRFY コマンドを無効にします。これはEメールアドレス収集に使われるあるテクニックを止めます。
local_recipient_maps = proxy:unix:passwd.byname $alias_maps
初期状態のままでよい
関係のありそうな項目
知らないローカルユーザを拒否
smtpd_client_restrictions = permit_mynetworks,
reject_rbl_client relays.ordb.org,
permit
必要であれば最後に追記
関係のありそうな項目
時間単位ごとにクライアントがこのサービスに接続を試行することが許される最大の接続試行数。
:wq ← vimのセーブして終了するコマンド
|
(6) Postfixの再起動
[root@localhost ~]# /etc/rc.d/init.d/postfix restart postfix を停止中: [ OK ] postfix を起動中: [ OK ] |
(7) Maildirディレクトリの作成
d1 ユーザ用の設定。 [root@localhost ~]# mkdir /home/d1/Maildir ← メールディレクトリを作成。 [root@localhost ~]# chmod 700 /home/d1/Maildir ← アクセス権限を変更。 [root@localhost ~]# chown -R d1:d1 /home/d1/Maildir ← 所有者を変更。 |
(8) Procmailの設定
サーバ全体にフィルタを適用する。 [root@localhost ~]# vi /etc/procmailrc ← 新規に作成する PATH=/bin:/usr/bin MAILDIR=$HOME/Maildir DEFAULT=$MAILDIR/ LOGFILE=$MAILDIR/procmail.log LOCKFILE=$HOME/.lockmail # SpamAssassin :0fw |/usr/bin/spamc ## bsfilter 導入済みの場合 ↓ ## # bsfilter :0 fw | /usr/local/bin/bsfilter --pipe --insert-flag --insert-probability ## bsfilter 導入済みの場合 ↑ ## [root@localhost ~]# ← vimを終了して戻ってきた状態 |
(9) Dovecotの設定
[root@localhost ~]# vi /etc/dovecot.conf1. DovecotをIMAPサーバーにする。
#protocols = imap imaps pop3 pop3s
protocols = imap
imap のみを有効にする
関係のありそうな項目
Protocols we want to be serving: imap imaps pop3 pop3s If you only want to use dovecot-auth, you can set this to "none".
#default_mail_env =
default_mail_env = maildir:~/Maildir
初期状態のままでも動作するが、念のため設定しておく
関係のありそうな項目
Location for users' mailboxes. This is the same as the old default_mail_env setting.
:wq ← vimのセーブして終了するコマンド
|
(10) Dovecotの起動
[root@localhost ~]# /etc/rc.d/init.d/dovecot start Dovecot Imap を起動中: [ OK ] [root@localhost ~]# chkconfig dovecot on [root@localhost ~]# chkconfig --list dovecot dovecot 0:off 1:off 2:on 3:on 4:on 5:on 6:off |
(11) SpamAssassinの起動
[root@localhost ~]# /etc/rc.d/init.d/spamassassin start Starting spamd: を起動中: [ OK ] [root@localhost ~]# chkconfig spamassassin on [root@localhost ~]# chkconfig --list spamassassin spamassassin 0:off 1:off 2:on 3:on 4:on 5:on 6:off |
(12) root権限から一般ユーザ権限に戻る
[root@localhost ~]# exit logout |
(13) 各ユーザのProcmailの設定
[d1@localhost ~]$ vi .procmailrc ← 新規に作成する SHELL=/bin/bash PATH=/bin:/usr/bin:/usr/local/bin MAILDIR=$HOME/Maildir LOGFILE=$MAILDIR/procmail.log LOCKFILE=$HOME/.lockmail SPAMMER_FROM=$HOME/.spammer_from # From:, Reply-To:, Sender:, From のどれかに # スパマーのメールアドレスが含まれていたらJunkに移動 :0 * ? test -s $SPAMMER_FROM * ? (formail -x From: -x Reply-To: -x Sender: -x From | fgrep -iqf $SPAMMER_FROM) $MAILDIR/.Junk/ # X-Spam が付いていない場合SpamAssassinに送る #:0fw #* !^X-Spam.* #|/usr/bin/spamc # SpamAssassinでスパム判定されたメールをJunkに移動 :0 * ^X-Spam-Status: Yes $MAILDIR/.Junk/ ## bsfilter 導入済みの場合 ↓ ## # bsfilterでスパム判定されたメールをJunkに移動 :0 * ^X-Spam-Flag: Yes $MAILDIR/.Junk/ # bsfilterでスパム判定されたメールをJunkに移動 :0 * ^X-Spam-Probability: *(1|0\.[89]) $MAILDIR/.Junk/ ## bsfilter 導入済みの場合 ↑ ## # メールを携帯に転送 :0 HBb * < 1000 * ! \<html\> ! example@example.com [d1@localhost ~]$ ← vimを終了して戻ってきた状態 スパマのメールアドレスを記述する。 [d1@localhost ~]$ vi .spammer_from ← 新規に作成する example@example.com foo@bar.com bar@foo.com [d1@localhost ~]$ ← vimを終了して戻ってきた状態 |
(14) Fetchmailの設定
[d1@localhost ~]$ vi .fetchmailrc poll pop.example.or.jp ← POP3のアドレス protocol POP3 username yourname ← 認証時の名前 password pass ← 認証時のパスワード fetchall [d1@localhost ~]$ ← vimを終了して戻ってきた状態 [d1@localhost ~]$ chmod 600 .fetchmailrc ← 権限を変更 |
(15) cronの設定
[d1@localhost ~]$ EDITOR=gedit crontab -e # 15分間隔で実行 */15 * * * * /usr/bin/fetchmail -s >/dev/null 2>&1 # 毎日午前2時に起動 0 2 * * * /usr/bin/sa-learn --spam --dir $HOME/Maildir/.Junk/cur/ >/dev/null 2>&1 # 毎日午前3時に起動 0 3 * * * /usr/bin/sa-learn --ham --dir $HOME/Maildir/cur/ >/dev/null 2>&1 ## bsfilter 導入済みの場合 ↓ ## 0 2 * * * /usr/local/bin/bsfilter --add-spam $HOME/Maildir/.Junk/cur/ >/dev/null 2>&1 0 3 * * * /usr/local/bin/bsfilter --add-clean $HOME/Maildir/cur/ >/dev/null 2>&1 0 4 * * * /usr/local/bin/bsfilter --update ## bsfilter 導入済みの場合 ↑ ## |
Q. Dovecot 起動時に以下のように表示され起動できない。
Can't use SSL /dovecot.pem Permission denied
A. SSL/TLS が不要であれば /etc/dovecot.conf ファイルを
# Disable SSL/TLS support.
ssl_disable = yes
のように変更してください。SSL/TLS が必要であれば
サーバー証明書等必要なファイルを作成してください。
■メールの送受信テスト |
d1@localhost.localdomain root@localhost.localdomain |
Postfix | |
項目名 | 設定 |
myhostname | |
mydomain | |
myorigin | |
inet_interfaces | inet_interfaces = all |
mydestination | mydestination = $myhostname, localhost.$mydomain, localhost |
mynetworks | mynetworks = 192.168.1.0/24, 127.0.0.0/8 |
home_mailbox | home_mailbox = Maildir/ |
mailbox_command | mailbox_command = /usr/bin/procmail |
Dovecot | |
項目名 | 設定 |
protocols | protocols = imap |