Taifuh.com

阿部のFacebookからの転載ブログ

雑記

ラズパイ4でサーバ構築 その4

投稿日:2021年5月21日 更新日:

まさか、まさか、その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に続く…。

-雑記
-, , ,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

2021年12月
 12345
6789101112
13141516171819
20212223242526
2728293031