日記帳
本ページはプロモーションが含まれています
カテゴリー
Links
blog(ブログ)マスター
アンドロイドの巣
ゼロから始めるベランダ菜園
タイトル
2024年10月
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

[2024年度版] さくらインターネットのメールを 条件フィルターで仕分けしてみた!

カテゴリー: General
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-



既読にする
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

ブログ内 関連記事: [2024年度版] さくらインターネットのメールを 条件フィルターで仕分けしてみた!


ブログ内 関連記事: [2024年度版] さくらインターネットのメールを 条件フィルターで仕分けしてみた!

PR

[PR]