[2024年度版] さくらインターネットのメールを 条件フィルターで仕分けしてみた!
カテゴリー: General
2024-02-27
タイトル
さくらインターネットのメールを
フィルターで仕分けする方法についてです。
方法は大きく2通りあります
さくらインターネットは、しょぼいからサーバーサイドの任意フィルターが実装されていない、そして実装する気もないのだろう。
かといって、
フリーメールを利用すると 通常メールが迷惑メールに落ちると自動削除されるから諸君は使いたくないだろう。
「サーバーサイドのフィルタ仕分け機能あり」 かつ、「迷惑メールフォルダを勝手に自動削除しない」のは
クライアントでフィルターする場合「IMAP受信でアプリのフィルターを使う」
PCアプリ(Thunderbird)で IMAP受信で新着フィルター仕分けしたほうが確実で間違いがない。そして簡単。
デメリット
仕分け処理設定している端末がオフラインだと、他の端末からのアクセスは仕分けされいないということが発生する。
サーバーでフィルターする場合「.mailfilter を書き換える」
.mailfilter
メール専用プランは、直接アクセスできないので利用できない?
デメリット
デメリットのほうがおおきいですね。
専用アプリを作って、それから.mailfilterを書き換え処理するとかしたほうがいいでしょうね。
.mailfilter にはインクルード機能がないので、コメントで確実な区切りラインが必要ですね。
書き換え時は、 .mailfilter に適当に区切りラインとコメントをいれておく、
処理フロー
1 .mailfilter にコメント目印があるか ある2へ ない3へ
2. .mailfilter のコメントより上の部分をとりだす 4へ
3. .mailfilter をとりだす 4へ
4. データベースから仕分けフィルターを.mailfilter用条件式に変換する。
5. 上記(2または3)と コメント目印をはさんで4.を結合して、.mailfilterに上書き保存する。
こんな感じでしょうか?
WEBUIベースでフィルター設定アプリを作るとセキュリティの問題で面倒なのでリモート接続して書き換えたほうがいいかもですね。
10件くらいなら手作業でも大丈夫でしょうが、あまりお勧めできません。
特定のフォルダに移動
フォルダ名はUTF7-IMAPで実際のシステムの相対物理パス名で記述します。ascii以外はエンコードされているので判読不能だと思います。
UTF7-IMAP
変換後:
既読にする
コメント行
.mailfilter 構文が正しいか確認する
サンプル1
参考リンク
・https://www.courier-mta.org/maildrop/maildropfilter.html
執筆:2024.02.27
編集:2024.02.27
編集:2024.02.27
さくらインターネットのメールを
フィルターで仕分けする方法についてです。
方法は大きく2通りあります
- クライアントでフィルターする場合「超簡単」
IMAP受信でアプリのフィルターを使います
- サーバーでフィルターする場合「高難易度」
.mailfilter を書き換えます
コントロールパネルから設定を変更すると上書きされて書き込んだ変更が消えるので注意です
さくらインターネットは、しょぼいからサーバーサイドの任意フィルターが実装されていない、そして実装する気もないのだろう。
かといって、
フリーメールを利用すると 通常メールが迷惑メールに落ちると自動削除されるから諸君は使いたくないだろう。
「サーバーサイドのフィルタ仕分け機能あり」 かつ、「迷惑メールフォルダを勝手に自動削除しない」のは
- OCN メール (新規加入できないので実質ないに等しい。)
クライアントでフィルターする場合「IMAP受信でアプリのフィルターを使う」
PCアプリ(Thunderbird)で IMAP受信で新着フィルター仕分けしたほうが確実で間違いがない。そして簡単。
デメリット
仕分け処理設定している端末がオフラインだと、他の端末からのアクセスは仕分けされいないということが発生する。
サーバーでフィルターする場合「.mailfilter を書き換える」
.mailfilter
場所 | /home/アカウント名/MailBox/メールユーザー名/.mailfilter |
アクセス権 | 0600 |
メール専用プランは、直接アクセスできないので利用できない?
デメリット
- 間違うとメールがなくなる。
- コントロールパネルからいじると.mailfilter が上書きされるため現実的ではないし、面倒。
- 後から見ると何を書いているのかわからなくなる
- 追加・削除にとても労力を使う
- 複雑な条件は実装できない
- サーバーOSのアップグレードやソフトの変更により動作しなくなる可能性がある
- フォルダ名変更したときのフォルダが存在しないときの問題
デメリットのほうがおおきいですね。
専用アプリを作って、それから.mailfilterを書き換え処理するとかしたほうがいいでしょうね。
.mailfilter にはインクルード機能がないので、コメントで確実な区切りラインが必要ですね。
書き換え時は、 .mailfilter に適当に区切りラインとコメントをいれておく、
処理フロー
1 .mailfilter にコメント目印があるか ある2へ ない3へ
2. .mailfilter のコメントより上の部分をとりだす 4へ
3. .mailfilter をとりだす 4へ
4. データベースから仕分けフィルターを.mailfilter用条件式に変換する。
5. 上記(2または3)と コメント目印をはさんで4.を結合して、.mailfilterに上書き保存する。
こんな感じでしょうか?
WEBUIベースでフィルター設定アプリを作るとセキュリティの問題で面倒なのでリモート接続して書き換えたほうがいいかもですね。
10件くらいなら手作業でも大丈夫でしょうが、あまりお勧めできません。
特定のフォルダに移動
if (条件式)★ 宛先フォルダがない場合は、デフォルトの受信箱に入るような書き込みもありますが、テストしていないので真相は不明です。
{
to "maildir/[.フォルダ名]/"
}
フォルダ名はUTF7-IMAPで実際のシステムの相対物理パス名で記述します。ascii以外はエンコードされているので判読不能だと思います。
UTF7-IMAP
変換後:
php -r "echo imap_utf8_to_mutf7('あいうえお');";
&MEIwRDBGMEgwSg-
&MEIwRDBGMEgwSg-
既読にする
FLAGS=S
コメント行
#コメント
.mailfilter 構文が正しいか確認する
maildrop -V 9 .mailfilter < /dev/null
サンプル1
if ( /^From:\s*(.*)/ )
{
foreach (getaddr $MATCH) =~ /.+/
{
if ( "$MATCH" =~ /\.cn$/ )
{
exit
}
if ( "$MATCH" =~ /@example\.com$/ )
{
to "maildir/[.フォルダ名]/" # フォルダ名はUTF7-IMAP
}
if ( /^Subject: *(.*)/ && "$MATCH" =~ /お知らせ/)
{
to "maildir/.&MEp35TCJMFs-" # お知らせ
}
}
}
参考リンク
・https://www.courier-mta.org/maildrop/maildropfilter.html