OSSのWebメールクライアントである「Roundcube」は、標準ではメール振り分けといったメールフィルターの機能を使用することができない。
Roundcubeはプラグインとして、機能を追加することができる。今回はRoundcubeにて「ManageSieve」のプラグインを有効化し、フィルター機能を利用できるようにする。
なお、ManageSieveを利用する際には、Dovecot PigeonholeをインストールしSieveスクリプトによるメール制御を行うことで、フィルター機能を実現することから、Postfix及びDovecot への設定追加が必要となる。
環境
Roundcubeのインストール手順は以下を参照いただきたい。
Roundcubeはあくまでもメールクライアントであるため、PostfixやDovecotによるメールサーバーの設定も必要となる。なお、今回は、バーチャルドメインのIMAPメールサーバーに対して設定を行っている。PostfixとDovecotの構築手順は以下を参照いただきたい。
構築環境としては以下となる。
- OS : AlmaLinux 8.8
- DB : MariaDB 10.3.35
- Roundcube : 1.6.2
- PHP : 7.4
- Apache HTTP Server : 2.4.37
- Postfix : 3.5.8
- Dovecot : 2.3.16
Rondcubeフィルター有効化手順
1. Dovecot Pigeonholeをインストール
Dovecot Pigeonholeとは、メールの処理方法を定義する「Sieve」と呼ばれるスクリプト言語を用いてDovecot のメール配送処理を制御するためのソフトウェアとなる。
Dovecot Pigeonholeはdnf
コマンドにてインストールできる。
dnf install dovecot-pigeonhole -y
2. Dovecot設定追加
Sieveを使えるようにするため、LDA (ローカル配送エージェント) 及びLMTP (Local Mail Transfer Protocol) の設定にsieve
を追加する。
/etc/dovecot/conf.d/15-lda.conf
protocol lda {
# Space separated list of plugins to load (default is global mail_plugins).
mail_plugins = $mail_plugins sieve # <- sieveを追加
}
/etc/dovecot/conf.d/20-lmtp.conf
protocol lmtp {
# Space separated list of plugins to load (default is global mail_plugins).
mail_plugins = $mail_plugins sieve # <- sieveを追加
}
Dovecotにて、ManageSieveと呼ばれるSieveのアップロード等を管理するための機能を有効化する。設定ファイルの前半のコメントアウトされている行をアンコメントし有効化する。
/etc/dovecot/conf.d/20-managesieve.conf
# Uncomment to enable managesieve protocol:
protocols = $protocols sieve
# Service definitions
service managesieve-login {
inet_listener sieve {
port = 4190
}
inet_listener sieve_deprecated {
port = 2000
}
# Number of connections to handle before starting a new process. Typically
# the only useful values are 0 (unlimited) or 1. 1 is more secure, but 0
# is faster. <doc/wiki/LoginProcess.txt>
service_count = 1
# Number of processes to always keep waiting for more connections.
process_min_avail = 0
# If you set service_count=0, you probably need to grow this.
vsz_limit = 64M
}
Sieveのスクリプトファイル名は、デフォルトで.dovecot.sieve
と隠しファイルになっているが、先頭に.
が付いているとメールフォルダと誤認してしまう場合があるため、dovecot.sieve
というファイル名に変更しておく。
/etc/dovecot/conf.d/90-sieve.conf
plugin {
sieve = file:~/sieve;active=~/dovecot.sieve
}
以上が完了したら、Dovecotのサービスを再起動させる。
# systemctl restart dovecot
3. Postfix設定追加
Dovecotのローカル配送エージェントであるdovecot-lda
にメール配送をできるよう、master.cf
に以下設定を追加する。
userはバーチャルメールボックスで使用するユーザー、グループであるvmail
を指定する。
/etc/postfix/master.cf
dovecot unix - n n - - pipe
flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/dovecot-lda -f ${sender} -d ${recipient}
設定したdovecot-lda
へメールを配送するよう、main.cf
に以下設定を追加する。
/etc/postfix/main.cf
virtual_transport = dovecot
以上が完了したら、Postfixのサービスを再起動させる。
systemctl restart postfix
4. Roundcubeで「ManageSieve」のプラグインを有効化
以下の設定を追加する。なお、設定は即時に反映されるため、サービス等の再起動は不要となる。
/etc/roundcubemail/config.inc.php
$config['plugins'] = array('managesieve');
5. 動作確認
実際にRoundcubeにログインすると、「設定」画面に「フィルター」が表示されるようになっていることがわかる。
ここで動作確認のため、以下の通りフィルターを作成する。
- フィルター名 : テスト
- 規則 : 「件名」、「含む」、「テストメール」
- 操作 : 「次にメッセージを移動」、「test」フォルダ
実際に「これはテストメールです。」という件名のメールを送信すると、以下の通り、「test」フォルダにメールが配送されていることがわかる。
なお、Sieveのスクリプトファイルは、以下のように作成されていた。
# cat /var/spool/virtual/[mydomain]/[myuser]/Maildir/dovecot.sieve
require ["fileinto"];
# rule:[テスト]
if allof (header :contains "subject" "テストメール")
{
fileinto "INBOX.test";
}
以上で、Roundcubeにて「ManageSieve」のプラグインを有効化する手順は完了となる。
0 件のコメント:
コメントを投稿