高度なメール振り分け用のSieveコードエディター
Sieveコードで高度な振り分け、転送、フラグ、自動返信をサーバー上から直接制御します。
記事の詳細
種類・難易度・対象プラン・最終更新の情報。
▼
記事の詳細
種類・難易度・対象プラン・最終更新の情報。
- 種類
- リファレンス
- 難易度
- 上級
- プラン
- Agency
- 最終更新
- 2026年9月9日
ほとんどの利用者には不要な機能です。TrekMailの画面上のフィルター作成機能は使いやすく、大半の用途を満たします。ただし開発者、多数のメールボックスを扱うIT管理者、設定画面の限界を超えた上級者は、Sieveコードで受信処理を完全に制御できます。
コードを有効にするにはAgencyプランが必要です。他のプランでは下書きを保存できますが、実行されません。
Sieveとは
新着メールのたびに動く、小規模な振り分け用言語です。差出人、件名、サイズ、ヘッダーを確認し、移動、転送、フラグ、拒否、自動返信を実行できます。
OutlookやApple Mailの端末側ルールと違い、サーバーで24時間動きます。パソコンやアプリが閉じていても処理され、すべての端末で結果が一致します。
通常は学習不要で、画面上の作成機能が裏でSieveを書きます。そこでは表せない処理だけをコードエディターで記述します。
コードと画面上のフィルターの使い分け
画面上の機能が適する場合:
- 「差出人にXを含む」「件名にYを含む」など単純な条件。
- 移動、転送、フラグ、拒否、破棄。
- コードを書きたくない場合。
- 構文を気にせず素早く変更したい場合。
コードが適する場合:
- 「これとそれを満たすが、別の条件は満たさない」など複雑な論理。
- 注文番号などを正規表現で照合する場合。
- 休暇返信、振り分け、転送を1本にまとめる場合。
- 画面上の条件や処理では表せない場合。
- 多数のメールボックスへテンプレートを複製する場合。
開き方
- TrekMailダッシュボードのメールボックスを開きます。
- 対象の横で管理を選びます。
- Sieveタブを開きます。
- Agencyでは、管理対象フィルターから生成された現在のコードが表示されます。編集するか最初から書きます。
- 保存して有効化をクリックします。
現在のコードがなければ空欄です。入力または貼り付け後、保存して有効化を選びます。
対応拡張機能
| 拡張機能 | 動作 |
|---|---|
fileinto |
指定フォルダーへ移動します。なければ受信トレイへ残すか破棄するだけです。 |
reject |
独自エラー付きで返送し、未配達を送信者へ知らせます。 |
vacation |
不在返信を送り、送信者ごとの頻度も制限します。 |
copy |
コピーを残して転送します。なければ転送元から消えます。 |
body |
ヘッダーだけでなく本文も照合します。 |
imap4flags |
既読、フラグ、重要などを設定します。 |
variables |
一致した部分を保存して再利用します。 |
relational |
サイズや数値ヘッダーの大小比較を追加します。 |
regex |
「含む」より強力な正規表現を使います。 |
冒頭のrequireで宣言します。サーバーは有効化前に検証し、非対応または危険な拡張を拒否します。
スクリプト例
例1:複雑な条件付き転送
特定顧客から届き、件名に"proposal"を含み、5 MB未満のメールを転送、保存、フラグ付けします。
require ["fileinto", "copy", "imap4flags", "relational", "comparator-i;ascii-numeric"];
# Forward proposal emails from client, but only if they are under 5MB
if allof (
address :contains "from" "@bigclient.com",
header :contains "subject" "proposal",
size :under 5M
) {
# Send a copy to the project manager
redirect :copy "pm@youragency.com";
# Flag it for follow-up
addflag "\\Flagged";
# File it in the client folder
fileinto "Clients/BigClient/Proposals";
# Stop processing further rules
stop;
}
# Everything else from this client goes to their general folder
if address :contains "from" "@bigclient.com" {
fileinto "Clients/BigClient";
stop;
}
**動作:**最初のルールは条件に合う提案だけを処理し、次のルールは同じ顧客の残りを一般フォルダーへ保存します。
例2:注文番号の正規表現
ORD-12345やORD-98765形式を自動で保存します。
require ["fileinto", "regex"];
# Match order confirmation emails with order numbers like ORD-#####
if header :regex "subject" "ORD-[0-9]{4,6}" {
fileinto "Orders";
stop;
}
# Match support ticket numbers like TICKET-####
if header :regex "subject" "TICKET-[0-9]{3,}" {
fileinto "Support Tickets";
stop;
}
動作:[0-9]{4,6}は4桁から6桁を表し、ORD-1234、ORD-12345、ORD-123456に一致します。
例3:休暇返信、保存、転送の組み合わせ
不在返信、緊急メールの転送、種類別の保存を1本で処理します。
require ["fileinto", "vacation", "copy", "imap4flags"];
# Auto-reply to everyone (once per 3 days per sender)
vacation :days 3 :subject "Out of office until April 15"
"Thanks for your email. I am out of the office until April 15
with limited access to email. For urgent matters, please contact
Sarah at sarah@youragency.com. I will reply when I return.";
# Forward urgent emails to Sarah immediately
if header :contains "subject" "urgent" {
redirect :copy "sarah@youragency.com";
addflag "\\Flagged";
}
# File invoices
if header :contains "subject" "invoice" {
fileinto "Invoices";
stop;
}
# File newsletters
if address :contains "from" "newsletter" {
fileinto "Newsletters";
stop;
}
動作:vacationは送信者ごとに3日間で最大1回返信します。stopがないため、その後も振り分けが続きます。
例4:独自ヘッダーによるフラグ
X-Priorityを読み、高優先度メールにフラグを付けます。
require ["imap4flags", "fileinto", "relational", "comparator-i;ascii-numeric"];
# X-Priority: 1 = highest, 5 = lowest
# Flag messages marked as high priority by the sending server
if header :value "le" :comparator "i;ascii-numeric"
"X-Priority" "2" {
addflag "\\Flagged";
}
# File low-priority messages (4 or 5) into a "Low Priority" folder
if header :value "ge" :comparator "i;ascii-numeric"
"X-Priority" "4" {
fileinto "Low Priority";
stop;
}
**動作:**1が最高、5が最低です。:value "le"は以下を意味し、1と2をフラグ付けします。4と5は受信トレイ外へ移動します。
重要事項
コードは画面上のフィルターを置き換えます。 フィルターは保存されたまま無効になります。戻すにはSieveタブ上部の既定にリセットをクリックします。
有効化前に検証されます。 構文エラー時は表示だけ行い、新しいコードを有効にしません。修正まで以前のコードまたはフィルターが動きます。
requireは必須です。 使用する全拡張をrequireへ書きます。fileintoやvacationの宣言忘れは拒否されます。
迷惑メールは先に除外されます。 TrekMailがサーバーで先に検査するため、Sieveに迷惑メール用ルールは不要です。
画面上のフィルターへ戻す
- Sieveタブを開きます。
- 右上の既定にリセットをクリックします。
- 確認します。
独自コードが破棄され、保存済みフィルターから自動生成されたコードが復元されます。
フィルタータブで変更を保存しても管理モードへ戻ります。自動返信はコードを上書きしないため、先に管理モードへ戻してください。
よくある誤りと修正
require忘れ。 "unknown command fileinto"なら、冒頭へrequire ["fileinto"];を追加します。
セミコロン不足。 全コマンドの末尾に必要です。特にstop、discard、fileintoを確認します。
文字列の引用符不足。 フォルダー、アドレス、値には二重引用符が必要です。fileinto Newsletters;は失敗し、fileinto "Newsletters";が正解です。
フラグのバックスラッシュ。 \Flaggedと\Seenは"\\Flagged"と"\\Seen"のように2本必要です。1本はエスケープとして扱われます。
フォルダーがない。 先にメールソフトで作成します。スクリプトとサーバーが対応しない限り、自動作成されません。
コードが大きすぎる。 数百行を超えるなら、一部を画面上のフィルターへ移せないか検討します。
関連記事
ワークフローの続きとなる関連ガイドに移動します。