まさか、まさか、その4までになるとは思わなんだ。やはりメール系の設定が重すぎる。
Dovecot, Mailmanでメール系の設定は終わり!
本当にメール系の設定は疲れる。あれこれエラーは出るは動かないわで、もう面倒過ぎるのでやめようかと思ったくらいだ。
Dovecotの設定
さて、Dovecot の設定だが、これも結構たくさんある。postfix と連携してバーチャル・メールボックスで認証が出来るようにしなければならない。MariaDB との連携も必要だ。
/etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:/var/spool/virtual/%d/%n/
maildir_stat_dirs=yes
namespace inbox {
inbox = yes
}
mail_uid = 5000
mail_gid = 5000
mail_privileged_group = vmailuser
なお、上記設定は vmailuser の gid / uid 共に 5000 とした場合である。
valid userの範囲設定も上記に合わせる必要がある。
first_valid_uid = 500
last_valid_uid = 5001
500は元々デフォルトで入っていた値だが、last を 5001 と広げておく。
ユーザ/パスワードのデータベースは sql にあるので、それに従った設定を行う。”#” を外して以下を有効化する。
/etc/dovecot/conf.d/10-auth.conf
!include auth-sql.conf.ext
/etc/dovecot/conf.d/auth-sql.conf.ext
passdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf.ext
}
userdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf.ext
}
/etc/devecot/dovecot-sql.conf.ext
driver = mysql
connect = dbname=postfix user=postfixadmin host=localhost password=PASSWORD
default_pass_scheme = MD5
password_query = SELECT password FROM mailbox WHERE username = '%u' AND active='1'
user_query = SELECT CONCAT('/var/spool/virtual/', maildir) AS mail, 5000 AS uid, 5000 AS gid, CONCAT('*:bytes=', quota) AS quota_rule FROM mailbox WHERE username = '%u' AND active='1'
iterate_query = SELECT username FROM mailbox
なお、上記設定は vmailuser の gid / uid 共に 5000 とした場合である。
以下、pop3 と lmtp などの設定を行う。 lmtp は postfix との通信を担うパイプである。
/etc/dovecot/conf.d/10-master.conf
service pop3-login {
inet_listener pop3 {
port = 110
}
inet_listener pop3s {
port = 995
ssl = yes
}
}
service lmtp {
unix_listener /var/spool/postfix/private/dovecot-lmtp {
user = postfix
mode = 0666
}
}
service auth {
unix_listener auth-userdb {
mode = 0666
user = vmailuser
group = vmailuser
}
}
service auth-worker {
user = vmailuser
}
lmtp に関しては、一々メアドを入れないとエラーになるので、以下を設定する。
/etc/dovecot/conf.d/20-lmtp.conf
protocol lmtp {
postmaster_address = abe@tafiuh.com
}
以上で dovecot の設定は終わりだ。
ここまで来て漸く起動可能となる。
$ systemctl start postfix
$ systemclt start dovecot
Mailmanの引っ越し ~旧サーバ編
メーリングリストは mailman を利用しているわけだが、サーバの引っ越しに関して言えば自動化ツールがある訳でもなく、アーカイブや参加メンバーのメアド、メンバー属性など色々な設定を手動で引き継ぐ必要があり、かなり面倒である。SQL化されないのだろうか。
旧サーバでの下調べと設定のコピーが必要だ。
管理するメーリングリストを出力する。
$ /usr/lib/mailman/bin/list_lists
すると、構築されているメーリングリストが出てくるので、さらにメンバーや、設定を読み出す。
$ /usr/lib/mailman/bin/list_admins <リスト名> // 管理者のメアド
$ /usr/lib/mailman/bin/list_owners <リスト名> // オーナーのメアド
$ /usr/lib/mailman/bin/list_members <リスト名> // 登録メンバのメアド
$ /usr/lib/mailman/bin/config_list -o <ファイル名> <リスト名> // 設定のファイルへの書き出し
メアドには連番が付く場合が多いが、以下の方法で読みだしておく( この例では177)。
$ /usr/lib/mailman/bin/withlist <リスト名>
<リスト名> のリストを読み込中 (ロック解除)
変数 `m' が <リスト名> の MailList インスタンスです
>>> m.post_id
177.0
>>> ^d
最終処理中
書庫も一旦固めて新サーバへコピーする。以下は複数のメーリングリストを一つのファイル archives.tgz に固めている。
$ cd /var/lib/mailman/archives/private
$ tar czfv archives.tgz *.mbox
Mailmanの引っ越し ~新サーバ編
Mailmanをインストールした後、/etc/mailman/mm_cfg.py にpostfixのバーチャル・メールボックスに関する設定を行う。
DEFAULT_URL_PATTERN = 'http://%s/mailman/'
MTA = 'Postfix'
POSTFIX_STYLE_VIRTUAL_DOMAINS = ['list.taifuh.com']
add_virtualhost('list.taifuh.com','list.taifuh.com')
旧サーバからの設定の書き戻し。
/mailman/bin/config_list -i <ファイル名> <リスト名>
お次は連番の書き戻し。
$ /usr/lib/mailman/bin/withlist <リスト名>
<リスト名> のリストを読み込中 (ロック解除)
変数 `m' が <リスト名> の MailList インスタンスです
>>> m.Lock()
>>> m.post_id=177
>>> m.post_id
177
>>> m.Save()
>>> ^D
リストをロック解除 (保存はしてません): <リスト名>
最終処理中
書庫を書き戻す。これで /var/lib/mailman/archives/private の下に ”リスト名.mbox/リスト名.mbox” というファイルが書き戻される。
$ cd /var/lib/mailman/archives/private
$ tar zxvf archives.tgz
mboxから書庫形式に展開する。
$ /usr/lib/mailman/bin/arch <リスト名> /var/lib/mailman/archives/private/<リスト名>.mbox/<リスト名>.mbox
これにより /var/lib/mailman/archives/private/リスト名 のディレクトリにWebアクセス用の書庫ページが作成される。これは /var/lib/mailman/archives/public 下にリンクが張られる。
後はmailmanのWeb設定用ページにアクセスし、リストの管理者、オーナー、メンバーなどを手動で再登録し直す。
なお、Web設定ページに設定したはずのリストが出てこない場合は、設定ページのURLに合わせた設定を行う。以下の例では http://list.taifuh.com/mailman/ として利用する場合の設定である。
$ /usr/lib/mailman/bin/withlist -l -r fix_url Ad --urlhost=list.taifuh.com
これにてメール系の設定はすべて完了!! 長かった!
これで設定系はすべて終わりだが、色々なTipsを最後にまとめるので、その5に続く…。