CentOS8でメールサーバ構築 – メール振り分け機能の導入(Sieve)

今回はメール振り分け機能を導入します。

この機能によって例えば件名に「SALE」とあるメールを「広告」というフォルダに振り分けるといった事が出来ます。

また、複数のメールアドレスに届いたメールをエイリアスで1つのメールアドレスに集約しているような場合は、この機能でどのメールアドレス宛てかによってフォルダに振り分けることが出来ます。

この記事で行うこと

  1. Pigeonholeのインストール
  2. Dovecotの設定
    1. dovecot.confの設定
    2. lmtp.confの設定
    3. managesieve.confの設定
    4. sieve.confの設定
  3. ファイアウォールの設定
  4. ManageSieveへのアクセス

1. Pigeonholeのインストール

PigeonholeはDovecotのモジュールの1つでSieveといわれるメールの振り分け機能を持っています。

また、Pigeonholeはメールの振り分けルールをサーバにSSH等でログインしなくてもクライアントから設定できるManage Sieveという機能も持っています。

このため、これ1つで振り分けに関する機能を取りそろえることが出来ます。

こちらは普通に dnf を使ってインストールできます。

[root@localhost ~]# dnf install dovecot-pigeonhole

2. Dovecotの設定

前述の通りPigeonholeはDovecotのモジュールなので、Dovecotの設定を行う事になります。

変更する箇所を表す部分で「-」は削除する行(変更前)、「+」は追加する行(変更後)となります。また、記号の記載が無い行は参考までに前後の行を記載しているものです。

2-1. dovecot.confの設定

ManageSieveによるアクセスを出来るようにするために、プロトコルの部分にsieveを加えます。

/etc/dovecot/dovecot.conf を編集します。

  # Protocols we want to be serving.
- protocols = imap lmtp
+ protocols = imap lmtp sieve

2-2. lmtp.confの設定

DovecotがMDA機能によってメールを配信するときにSieveでの振り分けを行います。

このため、MDA機能であるLMTPのプラグインとして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
+   mail_plugins = $mail_plugins sieve
  }

2-3. managesieve.confの設定

/etc/dovecot/conf.d/20-managesieve.conf はその名の通りManageSieveの設定を行うファイルですが、今回はデフォルト値で問題が無いため、このままとします。

ポート番号を変える必要がある場合などに使ってください。

2-4. sieve.confの設定

ManageSieve等を使って設定された振り分け情報は、初期値ではユーザディレクトリ( /home/ユーザ名/ )下に保存されます。

しかし、メールボックスの場所を変えている場合などはユーザディレクトリ下ではなく別の場所にしたいという場合があると思います。

その場合は、 /etc/dovecot/conf.d/90-sieve.conf 内の以下の部分を修正します。

- sieve = file:~/sieve;active=~/.dovecot.sieve
+ sieve = file:「設定したいフォルダ」;acitive=「設定したいファイル名」

「設定したいフォルダ」はメールボックスの場所と同じにすることをオススメします。必要なフォルダ権限が同じなので、アクセス権限で詰まることが減るためです。

ちなみに、こちらもメールボックス同様に %u といった変数が使えます。

この記事の2-3と同じ要領です

active= というのはアクティブな振り分けファイルのエイリアスとなるものです。

あまり深く考えずに、メールボックスのディレクトリに dovecot.sieve というファイル名で入れれば良いかと思います。

ちなみに元の設定では .dovecot.sieve. が付いていますが、メールボックス内で先頭に . のついたファイルがあると、メールのフォルダと勘違いされてしまうので注意してください。

3. ファイアウォールの設定

同じサーバ内からアクセスする場合(メールサーバと同じサーバにインストールされたRainLoopを使う場合など)は不要ですが、外部からアクセスするにはポートを空けてあげる必要があります。

今回はサービスを作らずに直接ポートを指定して開けたいと思います。

ファイアウォールのの設定についてはこちら
[root@localhost ~]# firewall-cmd --add-port=4190/tcp --permanent
[root@localhost ~]# firewall-cmd --reload

もし、ポート番号を変更している場合は 4190 を変更したポート番号に合わせてください。

4. ManageSieveへのアクセス

ManageSieveを扱えるクライアントにはThunderBird等がありますが、今回は前回インストールしたRainLoopを使ってアクセスしてみたいと思います。

RainLoopの管理画面を開きます。

ドメインの設定画面を開き、「SIEVE設定」をクリックします
「SIEVEスクリプトを使用する」にチェックを入れるとサーバのアドレスとポートを入力できるようになるので入力します。またセキュリティも選択してから、更新をクリックします。

設定が終わったら、ユーザとしてログインして、設定画面に行きます。

左サイドメニューの「フィルター」をクリックすると、「フィルターを追加」というボタンが表示されます。ここをクリックすることで様々な条件でフィルターを作成することが出来ます。
条件を指定し終えたら「完了」ボタンをクリックします。
フィルターを作ったら最後に「保存」ボタンを押すことで適用できます。
これを押さないと適用されずに破棄されてしまうので注意してください。

まとめ

これで、メールの振り分け機能まで設定できました。

一通り問題なく使えるメールサーバとなったのではないかと思います。(零細の無料メールサービスよりかは使えるんじゃないかなと)

次回は、迷惑メールのフィルタリング機能を入れたいと思います。

コメントを残す

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