アーカイブ: : 3月, 2021

dovecotのtcpwrpper対応

自分のドメインで実験してみた
FreeBSDのpkgでdovecotをインストールするとこうなる
pkg info dovecot
LIBWRAP : on
また、portsでも
cd /usr/ports/mail/dovecot
make config
ここでも有効になっている。
つまりFreeBSDのdovecotは最初からtcpwrpperが有効になっている。
これを見ると使いたくなってくる。

では、設定
dovecotのHPに解説が書いてある。
https://wiki.dovecot.org/LoginProcess
Login access check sockets
Dovecot login processes can check via UNIX socket if the incoming connection should be allowed to log in. This is most importantly implemented to enable TCP wrappers support for Dovecot.

TCP wrappers support
You must have built Dovecot with support for TCP wrappers. You can do this by giving –with-libwrap parameter to configure.

Add to dovecot.conf:

login_access_sockets = tcpwrap

service tcpwrap {
unix_listener login/tcpwrap {
group = $default_login_user
mode = 0600
user = $default_login_user
}
}

これを/usr/local/etc/dovecot/dovecot.confに書く
/etc/hosts.allowも変更
pop3 : 111.222.333. , .domain.jp : allow
:
:
:
all : all :deny

このサーバは認証をpostgresqlで行っているがこの設定で大丈夫なようだ。
認証は995のSSLでもこの設定でOKだった。
hosts.allowのpop3は/etc/servicesに書いている名前かと思ったら違うみたい。

qpopperのSSL化

OS:Freebsd-11-RELEASE

sysrc inetd_enable=”YES”

pkg install qpopper
inetd.confに追加記入
pop3 stream tcp nowait root /usr/local/libexec/qpopper qpopper -s -T 1200 -t /var/log/pop3/pop3.log
pop3s stream tcp nowait root /usr/local/libexec/qpopper qpopper -f /usr/local/etc/qpoppers.conf -s -T 1200 -t /var/log/pop3/pop3.log

letsencryptの導入
ウェブメールがあるので当然apache24も入っているのでwebrootで証明書を導入
pkg install py37-certbot
certbot certonly -webroot -w /usr/local/www/apache24/data -d サーバ名 -m メールアドレス
/etc/periodic.confを作成または以下を追記
weekly_certbot_enable=”YES”

設定ファイル/usr/local/etc/qpoppers.confを作成
set clear-text-password = always
set tls-support = alternate-port
set tls-version = default
set tls-server-cert-file = /usr/local/etc/letsencrypt/live/サーバ名/qpopper.pem

qpopperはSSL証明書ファイルがkeyファイル+証明書+中間証明書のファイルになるので作成する
cat privkey.pem fullchain.pem > qpopper.pem
実行スクリプト
vi /usr/local/etc/letsencrypt/live/サーバ名/make-qpopper-pem

!/bin/sh

cat /usr/local/etc/letsencrypt/live/サーバ名/privkey.pem /usr/local/etc/letsencrypt/live/サーバ名/fullchain.pem > /usr/local/etc/letsencrypt/live/サーバ名/qpopper.pem

このサーバはこの他にapache24 postfix dovecot(imap)があるので再読み込みをする

servece apache24 reload
service postfix reload
service dovecot reload

実行権限付与
chmod 744 /usr/local/etc/letsencrypt/live/サーバ名/make-qpopper-pem

これをperiodic.confと同期させるため
/etc/crontabに追記
以下の設定が最初から入っていてweeklyの実行でweekly_certbot_enableが実行される
15 4 * * 6 root periodic weekly
つまりこの作業後にqpopper.pemを作ればよい
私は10分後にした
25 4 * * 6 root /usr/local/etc/letsencrypt/live/サーバ名/make-qpopper-pem

dovecotは常時起動でpopクライアントからの接続を待ち受けるが、qpopperはinetdサーバから要求ごとに起動する。
なのでconfigの再読み込みは不要

このサーバは、元々postfix+qpopperのみで稼働していた。
imapを利用するため一時imap-uwを稼働していたがSSL化しようとしたらimap-uwがTLSに対応していなかった。そのためdovecotを導入してpopとimapを利用可能仕様とした。
しかしpopサーバを変えるとクライアントがサーバに残したメールをすべて再読み込みするためqpopperを残すこととした。

来年度の予定としてmailbox方式からmaildir方式に変更予定。その時にqpopperを廃止してdovecotでpopとimapを利用する仕様にする予定。