メール管理 · 1 min read · Dec 26, 2025

ISPConfigを使用したゴミ箱および迷惑メールフォルダの自動クリーニング(Roundcube + Tmpreaper(Tmpwatch)付き)

ISPConfigを使用したゴミ箱および迷惑メールフォルダの自動クリーニング(Roundcube + Tmpreaper(Tmpwatch)付き)

概要:

この短いミニハウツーは、ゴミ箱と迷惑メールフォルダの自動クリーニングを設定するのに役立ちます。ほとんどの(ウェブ)メールクライアントは、これらを自動的に作成することができます。多くの人々はメールディレクトリを掃除せず、迷惑メールとゴミ箱フォルダが大きく成長してしまいます。ISPConfigが(まだ)良好なメールディレクトリサイズ制限を設定できないため、代替手段としてこれらのフォルダを数日後にクリーニングすることが必要です。

前提条件:

このチュートリアルは、現在次のような構成を使用していることを前提としています:

  • Linux Debian Etch (v4.0)
  • ISPConfig (v2.2.24以降)
  • Make
  • Nanoまたはvi
  • Roundcubemail (v0.1.1パッケージインストール)
  • 1つのメールボックスを持つ1つのドメインが稼働中
  • 迷惑メールが削除されるのではなくフォルダに移動されるように設定されている(設定されていない場合は、リンクを参照)

この構成があなたのものと一致しない場合は、あなたの構成に合わせてハウツーを調整する必要があります。

リンク:

迷惑メールを削除するのではなくフォルダに移動するチュートリアル: https://www.howtoforge.com/forums/showthread.php?t=15704
Roundcubemail v0.1.1パッケージインストール: http://ispconfig.bb-hosting.org/downloads/roundcube/roundcubemail-0.1.1.pkg

1 - Roundcubemailを設定してゴミ箱と迷惑メールフォルダを自動的に作成する

すでにRoundcubemailまたは他の方法でこれを行っている場合は、この章をスキップできます。.Trashと.Junkが存在することを確認してください。

Roundcubemailを設定してメールフォルダを自動的に作成するには、Roundcubemailの設定を変更する必要があります:

nano /home/admispconfig/ispconfig/web/roundcubemail/config/main.inc.php

“$rcmail_config[‘create_default_folders’]”を見つけて、TRUEに設定されていることを確認し、設定が次のようになっていることを確認します:

[...]
// このメールボックスに下書きメッセージを保存します
// 下書きメッセージを保存しない場合は空白のままにします
$rcmail_config['drafts_mbox'] = 'Drafts';
// このメールボックスに迷惑メールメッセージを保存します
$rcmail_config['junk_mbox'] = 'Junk';
// このメールボックスに送信メッセージを保存します
// 送信メッセージを保存しない場合は空白のままにします
$rcmail_config['sent_mbox'] = 'Sent';
// 削除する際にメッセージをこのフォルダに移動します
// 直接削除する場合は空白のままにします
$rcmail_config['trash_mbox'] = 'Trash';
// メールボックスリストにこれらのフォルダを別々に表示します。
// これらのフォルダはローカライズされた名前でも表示されます
$rcmail_config['default_imap_folders'] = array('INBOX', 'Drafts', 'Sent', 'Junk', 'Trash');
// ログイン時に上記のデフォルトフォルダを自動的に作成します
$rcmail_config['create_default_folders'] = TRUE;
// デフォルトフォルダを名前変更、削除、購読変更から保護します
$rcmail_config['protect_default_folders'] = TRUE;
[...]

これで、ユーザーがログインするとメールフォルダが作成されます。

注意: これは、ユーザーがログインしている必要があるため、そうでない場合はゴミ箱と迷惑メールフォルダは存在せず、もちろんクリーニングされません!

2 - tmpreaperをインストールする

パッケージtmpwatchは以前はパッケージマネージャAptitudeにありましたが、理由は不明ですが置き換えられました。他のLinuxバリアントについては、tmpwatchを参照してください。

これを行うには、次のコマンドを入力します:

apt-get install tempreaper

重要: tmpreaperを使用できる場合は、章3にスキップしてください。tmpwatchを使用しなければならない場合は、cronファイルを修正するのを忘れないでください!

tmpreaperを使用できない場合は、次のようにtmpwatchをダウンロードしてインストールできます:

cd /usr/src  
wget http://linux.bononline.nl/linux/tmpwatch/src/tmpwatch-2.9.0.tar.gz  
tar xvzf tmpwatch-2.9.0.tar.gz  
cd tmpwatch-2.9.0  
make  
make install

MTvermoesに感謝!

3 - cronジョブを追加する

システムが毎日どのメールが削除される必要があるかを確認するために、cronジョブを追加する必要があります。これをcron.dailyに設定し、毎日削除するのに十分古いメールをチェックすることをお勧めします。ただし、最大時間が24時間未満の場合はcron.hourlyに配置することもできます。そうでない場合は、毎日チェックされるだけです。

これを行うには、/etc/cron.dailyに移動します。

cd /etc/cron.daily

次に、新しいファイル”clean-mailfolders”を作成します。

nano clean-mailfolders

そして、次のようにします:

#!/bin/sh
# 迷惑メールフォルダからメールを削除するまでの待機時間(デフォルト: 7日)0に設定するとオフになります。
junk_max_hours=$((24*7))
# ゴミ箱フォルダからメールを削除するまでの待機時間(デフォルト: 30日)0に設定するとオフになります。
trash_max_hours=$((24*30))
for domain in /var/www/*
do
  if [ -d "$domain"/user ]
  then
    for user in $domain/user/*
    do
      if [ "$junk_max_hours" -gt "0" ]
      then
        if [ -d "$user/Maildir/.Junk" ]
        then
          tmpreaper -m $junk_max_hours $user/Maildir/.Junk/{cur,new}
        fi
      fi
      if [ "$trash_max_hours" -gt "0" ]
      then
        if [ -d "$user/Maildir/.Trash" ]
        then
          tmpreaper -m $trash_max_hours $user/Maildir/.Trash/{cur,new}
        fi
      fi
    done
  fi
done

日付を自分のニーズに合わせて変更することをお勧めします。ファイルの最初に、”junk_max_hours”という名前の2つの変数があり、迷惑メールフォルダに保持される最大時間を含み、”trash_max_hours”はゴミ箱フォルダに保持される最大時間を含みます。値を0に設定すると、そのタイプのクリーニングが無効になります。

注意: tmpreaperの代わりにtmpwatchを使用しなければならない場合は、cronファイルを修正し、”tmpreaper”を”tmpwatch”に置き換えるのを忘れないでください。

結論

実際に本番サーバーで実行する前に、これを確認してください。このチュートリアルには一切の保証はありません。賢く、テストしてください!

以前に説明したように、変数を自分のニーズに合わせて変更できます。

私の最初のチュートリアルを気に入っていただけると幸いです!

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。