manekineko倉金家ホームページ

趣味の部屋/サーバー構築メモ その3

メールサーバー

2013年11月6日 開始 2013年11月18日 更新

 一番面倒なメールサーバーをやります。
今回はもう細かいチューニングはやめて基本機能とセキュリティーのみに注力。
Postfix
 前回のバージョンは2.3.3、今回は2.6.6です。
設定ファイル /etc/postfix/main.cf を見てみると従来とあまり変わりません。
main.cfをコピーして新規設定用にmain.cf-NEWを作っておき、これに古い設定ファイルから変更・追加部分をコピーペースト。同様にmaster.cf-NEWも。
さらにaccess、header_checksなどは古いのをそのまま設置。
 でもまだ他のdovecot、postfixadmin、cyrus-SASL、mySQLデータベースなどが完了するまで新規設定は適用できません。
システムメールを受けとるため従来の設定で起動しておきます。
postfixAdmin
 バージョンは前回2.3.2、今回2.3.6。
バージョンはほんの少し上がっていますが従来とほとんど同じ。
前回と同様に設定し、OKのようです。
MySQLデータベースも前回のがそのまま使えました。
Dovecot
 前回のバージョンは1.0.7、今回は2.0.9と大幅アップ。不安がよぎります。
設定ファイルを探して愕然。従来 /etc/dovecot.conf ファイルひとつだけだったのが、な、、なんと/etc/dovecot/ というフォルダに変わってしかも中にさらなるフォルダと総計23個ものファイルが入っています。旧設定ファイルのセクションがファイルに細分化され、設定の仕方も少し変わっているようです。
 旧設定ファイルの設定項目をたくさんのファイルの中から一つ一つ探して設定しなおし。dovecotは設定がしやすいのが気に入っていたんだけど、こうなると思い切りわずらわしい。
設定を見直す時と次回のために、場所と設定を記録しておこう。

以下、変えた設定ファイルと変えたところ。

/etc/dovecot/dovecot.conf
protocols = imap pop3
listen = *

/etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:/var/spool/mail/%d/%n
  …メールディレクトリの名前の付け方を domain/name とした場合。実際に合わせて。
mail_privileged_group = mail
first_valid_uid = 8  …mailユーザのuid
first_valid_gid = 12  …mailユーザのgid

/etc/dovecot/10-master.conf
service imap-login {
  inet_listener imap {
    port = 143
  }
  inet_listener imaps {
    port = 993
    ssl = yes
  }
}

service pop3-login {
  inet_listener pop3 {
    port = 110
  }
  inet_listener pop3s {
    port = 995
    ssl = yes
  }
}

# これはpostfixがdovecotを使って認証する場合。
service auth {
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    # Postfix のユーザとグループ
    user = postfix
    group = postfix
  }
}

/etc/dovecot/conf.d/auth-sql.conf.ext
passdb {
  driver = sql
  args = /etc/dovecot/dovecot-mysql.conf
}
userdb {
  driver = sql
  args = /etc/dovecot/dovecot-mysql.conf
}

/etc/dovecot/dovecot-mysql.conf (…作成)
driver = mysql
connect = host=/var/lib/mysql/mysql.sock dbname=postfix user=(SQLユーザ名) password=(SQLパスワード)
…localhostでソケットの場所が標準的なら
connect = host=localhost dbname=postfix user=(SQLユーザ名) password=(SQLパスワード)
でもいいようだ。
default_pass_scheme = PLAIN
user_query = SELECT concat('/var/spool/mail/', maildir) as home, 8 as uid, 12 as gid FROM mailbox WHERE username = '%u' AND active = '1'
password_query = SELECT password FROM mailbox WHERE username = '%u' AND active = '1'
参考:http://wiki.dovecot.org/AuthDatabase/SQL

 dracなどを使ってのPop-Befpre-SMTP(いわゆるPBS)はもうやりません。

SASL認証
 前回やったように、CyrusSASL-MySQL, CyrusSASL-RIMAP, Dovecot-AUTH の3つの方式を試してどれもOK。ちがいと言えば CyrusSASL の /usr/lib/sasl2/ ディレクトリが /usr/lib64/sasl2/ に変わったくらい。(前回はi386でやったから。)
 どれもOKなのを確認して今回も最終的に Dovecot-AUTH を使う設定にしました。

ウィルスチェッカー clamavとclamsmtp
 今回もウィルスチェックに Clam AntiVirus(clamav) と clamsmtp を使用します。
今回は clamav, clamd, clamsmtp をすべて EPEL から入れました。
 最初昔のつもりで clamsmtpd と clamd を起動したら postfix と全然つながらずわけがわからなかったのですが、EPEL のは clamsmtpd とそれ専用にチューンアップされた clamsmtp-clamd を起動するのですね。気がつくのに一日かかってしまった。なまじ昔と同じにやればいいと信じ込んでしまっていたのが敗因。

ちなみに clamsmtp 関係の設定ファイルと変えたところ。

/etc/clamsmtpd.conf …clamsmtpdの設定
OutAddress: 127.0.0.1:10026 …そのままでもいいけど制限しておいた方がいい。
Listen: 127.0.0.1:10025 …(同上。)
Header: X-Virus-scanned: clamAV using ClamSMTP …メールヘッダに付加するチェック記録
Action: drop …ウィルスメールは配送しない。
Quarantine: on …念のため捨てずに隔離する。
VirusAction: /etc/postfix/virusalert.sh …ウイルスが見つかったときメールするアクション。自分で作ったシェルスクリプト。

/etc/clamd.d/clamsmtp.conf …clamsmtp専用のclamdの設定
SelfCheck 3600 …10分毎だとログがうっとうしい。

/etc/sysconfig/clamd.clamsmtp …変更なし

/etc/sysconfig/clamsmtpd …変更なし

/etc/tmpfiles.d/clamsmtp.conf …変更なし


スパムフィルタ
 私のメールアドレスには毎日数十通くらいスパムメールが来ます。でも逆引き未設定ホストをサーバーで一旦はじく設定をしてあり、受け取ってしまうのは月に1、2件あるかないかといったところ。今回も同様に設定しました。
→ サーバー構築メモ その2/メールサーバー その2/再度のスパム対策

SquirrelMail
 出先などでインターネット環境さえあればとにかくメールが見れ、また送信できるよう今回もSquirrelMailを導入。EPEL にrpmパッケージがあったのでそれをインストール。/usr/share/squirrelmail/ にインストールされます。
# cd /usr/share/squirrelmail/config/
# ./conf.pl で設定開始。
変えたところ。
2. Server Settings -> 2. Domain => iroribata.net …localhostはちとみっともない。
2. Server Settings -> 3. Sendmail or SMTP => SMTP …Postfixで外部にメールするならこちららしい。
2. Server Settings -> A. IMAP Settings -> 8. Server software => dovecot
2. Server Settings -> A. IMAP Settings -> 9. Delimiter => ditect …何のことかよくわからないので自動検出。
10. Languages -> 1. Default Languages => ja_JP
10. Languages -> 2. Default Charset => iso-2022-jp
最後に S で保存して完了。

/usr/share/squirrelmail のリンクをHTTP表示フォルダに置いてアクセス。OK。

不正中継チェック
 最後に http://www.rbl.jp/svcheck.php でメールサーバーの不正中継テストをやっていただき、OKを確認。