http://studio.s101.xrea.com/zu6.txt
http://studio.s101.xrea.com/localhost.cfg
プロバイダなどから
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 (メールの受信)
の設定を行う。
*Step1
root権限に切り替え
[d1@localhost ~]$ su -
Password:
*Step2
sendmailの停止
[root@localhost ~]# /etc/rc.d/init.d/sendmail stop
sendmail を停止中: [ OK ]
sm-client を停止中: [ OK ]
*Step3
MTAの切り替え
sendmail -> postfix
CUI
[root@localhost ~]# alternatives --config mta
GUI
[root@localhost ~]# system-switch-mail
*Step4
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
*Step5
Postfixの設定
[root@localhost ~]# vi /etc/postfix/main.cf
1. FQDN の設定を無効にする。ローカルでのみの使用の為。
#myhostname = host.domain.tld
#myhostname = virtual.domain.tld
default
2. 外部からのメール配送を受け付ける。
inet_interfaces = all
#inet_interfaces = $myhostname
#inet_interfaces = $myhostname, localhost
#inet_interfaces = localhost
localhost -> all
3. 届けられたメールが自分宛かどうかを判断するためのパラメータを設定する。
mydestination = $myhostname, localhost.$mydomain, localhost
#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain,
# mail.$mydomain, www.$mydomain, ftp.$mydomain
default
relay_domains = $mydestination
default
4. 信頼されたSMTPクライアントの設定をする。
#mynetworks_style = class
mynetworks_style = subnet
#mynetworks_style = host
default
mynetworks = 192.168.1.0/24, 127.0.0.0/8
add
5. メールボックス形式をMaildir形式にする。
#home_mailbox = Mailbox
home_mailbox = Maildir/
Maildir/ を有効にする。
6. Procmailと連携を行う。
mailbox_command = /usr/bin/procmail
add
7. バナーを非表示にする。
smtpd_banner = $myhostname ESMTP
add
バージョンによる脆弱性を利用されないようにするため。
8. メール受信最大サイズの設定をする。
message_size_limit = 10240000
mailbox_size_limit = 51200000
最後に追記。
message_size_limit (default: 10240000)
mailbox_size_limit (default: 51200000)
メールサーバのパフォーマンスの低下を防止するため。
9. スパム対策として、HELOコマンドの要求とVRFYコマンドの禁止を設定する。
smtpd_helo_required = yes
disable_vrfy_command = yes
最後に追記。
HELO(EHLO)コマンドは、SMTPセッションの開始時に、SMTPクライアントが自身のホスト名を送信するコマンド。
スパムメールを送信するソフトにHELOコマンドを発行しないソフトがあるため。
VRFYコマンドは、有効なユーザまたはメールボックスを照会するためのコマンド。
有効なメールアドレスの情報が漏れてしまうのを避けるため。
10. ローカル受信者チェック
local_recipient_maps = proxy:unix:passwd.byname $alias_maps
不明なユーザ宛のメールの受信を拒否する。
11. 接続制限
smtpd_client_restrictions = permit_mynetworks,
reject_rbl_client relays.ordb.org,
permit
最初に接続元のIPアドレスが $mynetworks に設定されたIPアドレスかどうかを確認。
設定されたIPアドレスの場合は、接続許可。設定されたIPアドレスで無い場合は、
次の「relays.ordb.org」に登録されているIPアドレスかどうかを確認。ORDBに登録
されている場合は接続が拒否される。登録されていない場合は permit により接続が許可される。
このメールシステムのインターネットホスト名。
myhostname (default: see "postconf -d" output)
このメールシステムのインターネットドメイン名。
mydomain (default: see "postconf -d" output)
ドメイン名で、ローカルで投函されたメールはそこから来たように見え、またローカルで投かんされたメールはそこに配送されます。
myorigin (default: $myhostname)
このメールシステムがメールを受け取るネットワークインターフェースアドレス。
inet_interfaces (default: all)
$local_transport メール配送 transport を使って配送されるドメインのリスト。
mydestination (default: $myhostname, localhost.$mydomain, localhost)
このシステムがメールをリレーしようとする配送先のドメイン (およびそのサブドメイン)。
relay_domains (default: $mydestination)
mynetworks パラメータのデフォルト値を生成する方法。
mynetworks_style (default: subnet)
"よそ者" よりも多くの権限を持つ "信頼された" SMTPクライアントのリスト。
mynetworks (default: see "postconf -d" output)
オプションのメールボックスファイルの local(8) ユーザのホームディレクトリからの相対パス名。
home_mailbox (default: empty)
メールボックス配送に local(8) 配送エージェントが使う、オプションの外部コマンド。
mailbox_command (default: empty)
SMTP グリーティングバナーで 220 状態コードの後に続くテキスト。
smtpd_banner (デフォルト: $myhostname ESMTP $mail_name)
エンベロープ情報を含む、バイト単位のメッセージの最大サイズ。
message_size_limit (default: 10240000)
local(8) の個々のメールボックスまたは maildir の最大サイズ、もしくはゼロ (制限なし)。
mailbox_size_limit (default: 51200000)
リモートSMTPクライアントが SMTP セッションの最初で HELO または EHLO コマンドで自己紹介することを要求します。
smtpd_helo_required (default: no)
SMTP VRFY コマンドを無効にします。これはEメールアドレス収集に使われるあるテクニックを止めます。
disable_vrfy_command (default: no)
知らないローカルユーザを拒否
local_recipient_maps (default: proxy:unix:passwd.byname $alias_maps)
時間単位ごとにクライアントがこのサービスに接続を試行することが許される最大の接続試行数。
smtpd_client_restrictions (default: empty)
*Step6
Postfixの再起動
[root@localhost ~]# /etc/rc.d/init.d/postfix restart
postfix を停止中: [ OK ]
postfix を起動中: [ OK ]
*Step7
Maildirディレクトリの作成
d1 ユーザ用の設定。
メールディレクトリを作成。
mkdir /home/d1/Maildir
アクセス権を変更。
chmod 700 /home/d1/Maildir
所有者を変更。
chown -R d1:d1 /home/d1/Maildir
[root@localhost ~]# mkdir /home/d1/Maildir
[root@localhost ~]# chmod 700 /home/d1/Maildir
[root@localhost ~]# chown -R d1:d1 /home/d1/Maildir
*Step8
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
:0 fw
| /usr/local/bin/bsfilter --pipe --insert-flag --insert-probability
#####
*Step9
Dovecotの設定
[root@localhost ~]# vi /etc/dovecot.conf
1. DovecotをIMAPサーバーにする。
#protocols = imap imaps pop3 pop3s
protocols = imap
add
2. メールボックスの形式を Maildir にする。
#default_mail_env =
default_mail_env = maildir:~/Maildir
add
*Step10
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
*Step11
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
*Step12
root権限から一般ユーザ権限に戻る
[root@localhost ~]# exit
logout
*Step13
各ユーザの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
//////////////////////////////////////////////////
# 送信者のメールアドレスを抽出。
# Reply-To, Sender, From のどれかに見つかったら
# 記述されていたメールアドレスを FROM に代入。
:0
*$ ! ^Reply-To: *\/[^ ].*
*$ ! ^Sender: *\/[^ ].*
*$ ! ^From *\/[^ ]+
{
FROM = `formail -x From:`
}
:0 E
{
FROM = $MATCH
}
# 既知のスパマーからメールをJunkに移動
:0
* ? test -s $SPAMMER_FROM
* ? echo "$FROM" | fgrep -iqf $SPAMMER_FROM
$MAILDIR/.Junk/
//////////////////////////////////////////////////
# 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でスパム判定されたメールをJunkに移動
:0
* ^X-Spam-Flag: Yes
$MAILDIR/.Junk/
# bsfilterでスパム判定されたメールをJunkに移動
:0
* ^X-Spam-Probability: *(1|0\.[89])
$MAILDIR/.Junk/
#####
# メール転送
:0 HBb
* < 1000
* ! \
! example@example.com
[d1@localhost ~]$ vi .spammer_from
foo@bar.com
bar@foo.com
*Step14
Fetchmailの設定
[d1@localhost ~]$ vi .fetchmailrc
poll pop.example.or.jp
protocol POP3
username yourname
password pass
fetchall
[d1@localhost ~]$ chmod 600 .fetchmailrc
*Step15
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/.INBOX/cur/ >/dev/null 2>&1
__END__
---
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 が必要であれば
サーバー証明書等必要なファイルを作成してください。
---
Webサーバー構築
使用するパッケージがインストールされているかの確認
# rpm -q httpd
httpd-2.0.54-10
---
Apache (Webサーバー)
の設定を行う。
*Step1
root権限に切り替え
[d1@localhost ~]$ su -
Password:
*Step2
Apacheの起動
[root@localhost ~]# /etc/rc.d/init.d/httpd start
httpd を起動中: [ OK ]
[root@localhost ~]# chkconfig httpd on
[root@localhost ~]# chkconfig --list httpd
httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
*Step3
Apacheの設定
[root@localhost ~]# vi /etc/httpd/conf/httpd.conf
1. DocumentRoot の設定。
DirectoryIndex で指定されたファイルがない場合に自動的に
ディレクトリ内のファイル一覧を生成して応答するための設定。
.htaccess による認証を許可する。
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
↓
Options -Indexes FollowSymLinks
AllowOverride AuthConfig Limit
Order allow,deny
Allow from all
2. LanguagePriority の設定。
配信するドキュメントについて、言語の優先順位を設定する。
LanguagePriority en ca cs da de el eo es et fr he hr it ja ko...
↓
LanguagePriority ja en ca cs da de el eo es et fr he hr it ko...
3. AddDefaultCharset の設定。
実際に配信するドキュメントで利用されるエンコーディングに合わせる。
AddDefaultCharset UTF-8
↓
AddDefaultCharset shift_jis
4. ServerTokens ディレクティブの設定。
バナーの非表示
ServerTokens OS
↓
ServerTokens ProductOnly
5. ServerSignature ディレクティブの設定。
ServerSignature On
↓
ServerSignature Off
6. icons ディレクトリの設定。
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
↓
Options -Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
*Step4
不要なディレクトリやファイルの削除
# rm -f /var/www/error/noindex.html
# rm -f /etc/httpd/conf.d/welcome.conf
マニュアルの削除
# rm -fr /var/www/manual
# rm -fr /etc/httpd/conf.d/manual.conf
*Step5
php.iniの編集。マルチバイトセッションを有効にする。
[root@localhost ~]# vi /etc/php.ini
[mbstring]
;mbstring.language = Japanese
;mbstring.internal_encoding = EUC-JP
;mbstring.http_input = auto
;mbstring.http_output = SJIS
;mbstring.encoding_translation = Off
;mbstring.detect_order = auto
;mbstring.substitute_character = none;
;mbstring.func_overload = 0
↓
[mbstring]
; デフォルトの言語を設定
mbstring.language = Japanese
; デフォルトの内部エンコーディングを設定
mbstring.internal_encoding = EUC-JP
; デフォルトのHTTP入力文字エンコーディングを設定
mbstring.http_input = auto
; デフォルトのHTTP出力文字エンコーディングを設定
mbstring.http_output = SJIS
; HTTP入力エンコーディング変換の設定
mbstring.encoding_translation = Off
; デフォルトの文字エンコーディング検出順序を設定
mbstring.detect_order = auto
; 代替文字のデフォルト値を設定
mbstring.substitute_character = none;
; マルチバイト対応版関数による既存関数のオーバーロード
mbstring.func_overload = 0
/var/www/html
http://localhost/
__END__
---
WebMail構築
使用するパッケージがインストールされているかの確認
# rpm -q squirrelmail
squirrelmail-1.4.4-2
---
SquirrelMail (Webメーラー)
の設定を行う。
*Step1
ディレクトリの移動と設定スクリプト実行をする。
[root@localhost ~]# cd /usr/share/squirrelmail/config
[root@localhost config]# ./conf.pl
*Step2
入力した文字が表示されない場合に設定する。
以下の設定を参考。
==============================
C Turn color off
S Save data
Q Quit
::::::::::::::::::::::::::::::
C Turn color on
S Save data
Q Quit
==============================
/// Change
Command >> C
Turn color off -> Turn color on
*Step3
以下のように設定を変更する。(共通)
/*----- デフォルト言語を日本語に設定 -----*/
#1-1
10. Languages を選択する。
Command >> 10
以下の設定を参考。
==============================
Language preferences
1. Default Language : en_US
2. Default Charset : iso-8859-1
3. Enable lossy encoding : false
::::::::::::::::::::::::::::::
Language preferences
1. Default Language : ja_JP
2. Default Charset : iso-2022-jp
3. Enable lossy encoding : false
==============================
#1-2
/// Change
Command >> 1
[en_US]: ja_JP
Command >> 2
[iso-8859-1]: iso-2022-jp
#1-3
メインメニューに戻る。
Command >> R
/*----- SquirrelMailのバージョンを非表示 -----*/
#2-1
4. General Options を選択する。
Command >> 4
以下の設定を参考。
==============================
7. Hide SM attributions : false
::::::::::::::::::::::::::::::
7. Hide SM attributions : true
==============================
#2-2
/// Change
Command >> 7
Hide SM attributions (y/n) [n]: y
#2-3
メインメニューに戻る。
Command >> R
*Step4
以下のように設定を変更する。(特有)
#1
2. Server Settings を選択する。
Command >> 2
#2
3. Update IMAP Settings を選択する。
Command >> A
以下の設定を参考。
==============================
General
-------
1. Domain : localhost
2. Invert Time : false
3. Sendmail or SMTP : Sendmail
IMAP Settings
--------------
4. IMAP Server : localhost
5. IMAP Port : 143
6. Authentication type : login
7. Secure IMAP (TLS) : false
8. Secure software : uw
9. Delimiter : /
B. Change Sendmail Config : /usr/sbin/sendmail
H. Hide IMAP Server Settings
::::::::::::::::::::::::::::::
General
-------
1. Domain : localhost
2. Invert Time : false
3. Sendmail or SMTP : SMTP
IMAP Settings
--------------
4. IMAP Server : localhost
5. IMAP Port : 143
6. Authentication type : login
7. Secure IMAP (TLS) : false
8. Secure software : other
9. Delimiter : .
B. Update SMTP Settings : localhost:25
H. Hide IMAP Server Settings
==============================
#3
/// Change
Command >> 3
1. Sendmail
2. SMTP
Your choice [1/2] [1]: 2
Command >> A
Command >> 8
[uw]: other
Command >> 9
[/]: .
*Step5
変更を保存する。
#1
S Save data を選択し、変更をセーブする。
Command >> S
#2
Q Quit を選択し、終了する。
Command >> Q
*Step6
Junkディレクトリの作成
http://localhost/webmail/
にアクセスし、Junkディレクトリを作成する
ログイン名:d1
パスワード:******
#1
「フォルダ」をクリック。
#2
「フォルダを作成」に「Junk」と入力。
#3
「作成」ボタンをクリック。
#4
「リフレッシュ」をクリック。
#5
左メニューにJunkが新たに作成されているか確認。
http://localhost/webmail/src/configtest.php
__END__
---
Q. 以下のように表示されログインできない。
SMTP (13) Permission denied
A. ファイアーウォールの設定を見直してください。
よくわからない場合は、一度ファイアーウォールを無効にして
ちゃんと動作するか確認してみてください。
---
テスト項目。
・配送のテスト
# host -t mx localhost
・メール送信テスト
$ echo "This is a test message." | mail -s 'TEST' d1
$ mail d1
Subject: TEST
This is a test message.
.
Cc:
・スパムメールテスト
本文に以下の文字列を書く。
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
d1@localhost.localdomain
root@localhost.localdomain
---
参考文献:
日経Linux編「Linux セキュア・サーバーの創り方」『日経BPパソコンベストムック』日経BP社、2005年
『日経Linux』日経BP社、2006年11月号
Fedoraで自宅サーバー構築
http://fedorasrv.com/
はじめての自宅サーバー構築 - Fedora/CentOS -
http://kajuhome.com/
---
Broadcast message from root (pts/1) (Sun Nov 26 00:00:00 2006):
The system is going down for reboot NOW!