以前構築したメールサーバーに、Vacation(不在時の自動返信機能)を設定する機会があったので記録に残しておきます。

環境
- OS:AlmaLinux release 9.7 (Moss Jungle Cat)
- Dovecot 2.3.16
- Dovecot Pigeonhole 2.3.16
- SnappyMail 2.38.2
バーチャルユーザーが共有ホームディレクトリを使う構成なので、いつもお世話になっているサイト(https://centossrv.com/almalinux/postfix-vacation.shtml)で解説されている .forward ベースの Vacation は使えません。
Sieve の拡張機能として Vacation があるので、今回はそれを使って設定しました。
Dovecot の設定変更
Dovecot の設定ファイルに、Sieve 拡張機能の Vacation を読み込むよう変更します。
/etc/dovecot/local.conf を開き、最終行に追加します。
# Vacation
plugin {
sieve_extensions = +vacation
}【方法1】Sieve ファイルの手動設定
/home/vmail/ドメイン名/ユーザー名/sieve/vacation.sieve を作成し、自動返信内容を記述します。
require ["vacation"];
vacation
:days 7
:subject "不在のお知らせ"
:from "user@example.com"
:addresses ["user@example.com"]
"ただいま不在のため、返信が遅れます。
緊急の場合は〇〇までご連絡ください。";sieve ファイルを、sievec コマンドでコンパイルします。
sievec /home/vmail/ドメイン名/ユーザー名/sieve/vacation.sieveDovecot から読めるように、所有者をメールユーザー(vmail)に変更しておきます。
chown vmail: /home/vmail/ドメイン名/ユーザー名/sieve/vacation.sieve
chown vmail: /home/vmail/ドメイン名/ユーザー名/sieve/vacation.svbinDovecot の設定ファイルに、直接 sieve スクリプトを読み込む設定を追加します。
# Vacation
plugin {
sieve_extensions = +vacation
sieve_before = /home/vmail/ドメイン名/ユーザー名/sieve/vacation.sieve
}Dovecot を再起動したら、設定したアドレスにメールを送って動作確認してください。
【方法2】SnappyMail を使って設定
一通り設定した後に気が付いたのですが、サーバーに SnappyMail がインストールされている場合は GUI からお手軽に設定することもできます。
SnappyMail にメールユーザーでログインした後「設定」>「フィルター」と辿ります。
「スクリプトを追加」ボタンから Sieve スクリプトを追加する事で【方法1】と同様の設定を行うことができます。

Vacation メールの DKIM が FAIL になる場合
Vacation メールのヘッダーを確認したところ、DKIM が FAIL になっていました。
Authentication-Results: example.com;
dkim=none;
dmarc=fail reason="SPF not aligned (relaxed), No valid DKIM" header.from=example.com (policy=quarantine);
spf=passこの場合は、Postfix の設定に non_smtpd_milters を追加することで解決します。
smtpd_milters = unix:/run/rspamd/worker-proxy.sock
non_smtpd_milters = unix:/run/rspamd/worker-proxy.sockまとめ
図らずも二通りのやり方をしましたが、SnappyMail を使って設定する方が圧倒的に楽だし、Dovecot の設定ファイルを触らなくて済むので安全だという事が分かりました。

コメント