高度なメール振り分け用のSieveコードエディター

Sieveコードで高度な振り分け、転送、フラグ、自動返信をサーバー上から直接制御します。

記事の詳細

種類・難易度・対象プラン・最終更新の情報。

種類
リファレンス
難易度
上級
プラン
Agency
最終更新
2026年9月9日

ほとんどの利用者には不要な機能です。TrekMailの画面上のフィルター作成機能は使いやすく、大半の用途を満たします。ただし開発者、多数のメールボックスを扱うIT管理者、設定画面の限界を超えた上級者は、Sieveコードで受信処理を完全に制御できます。

コードを有効にするにはAgencyプランが必要です。他のプランでは下書きを保存できますが、実行されません。

Sieveとは

新着メールのたびに動く、小規模な振り分け用言語です。差出人、件名、サイズ、ヘッダーを確認し、移動、転送、フラグ、拒否、自動返信を実行できます。

OutlookやApple Mailの端末側ルールと違い、サーバーで24時間動きます。パソコンやアプリが閉じていても処理され、すべての端末で結果が一致します。

通常は学習不要で、画面上の作成機能が裏でSieveを書きます。そこでは表せない処理だけをコードエディターで記述します。

コードと画面上のフィルターの使い分け

画面上の機能が適する場合:

  • 「差出人にXを含む」「件名にYを含む」など単純な条件。
  • 移動、転送、フラグ、拒否、破棄。
  • コードを書きたくない場合。
  • 構文を気にせず素早く変更したい場合。

コードが適する場合:

  • 「これとそれを満たすが、別の条件は満たさない」など複雑な論理。
  • 注文番号などを正規表現で照合する場合。
  • 休暇返信、振り分け、転送を1本にまとめる場合。
  • 画面上の条件や処理では表せない場合。
  • 多数のメールボックスへテンプレートを複製する場合。

開き方

  1. TrekMailダッシュボードのメールボックスを開きます。
  2. 対象の横で管理を選びます。
  3. Sieveタブを開きます。
  4. Agencyでは、管理対象フィルターから生成された現在のコードが表示されます。編集するか最初から書きます。
  5. 保存して有効化をクリックします。

現在のコードがなければ空欄です。入力または貼り付け後、保存して有効化を選びます。

対応拡張機能

拡張機能 動作
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へ書きます。fileintovacationの宣言忘れは拒否されます。

迷惑メールは先に除外されます。 TrekMailがサーバーで先に検査するため、Sieveに迷惑メール用ルールは不要です。

画面上のフィルターへ戻す

  1. Sieveタブを開きます。
  2. 右上の既定にリセットをクリックします。
  3. 確認します。

独自コードが破棄され、保存済みフィルターから自動生成されたコードが復元されます。

フィルタータブで変更を保存しても管理モードへ戻ります。自動返信はコードを上書きしないため、先に管理モードへ戻してください。

よくある誤りと修正

require忘れ。 "unknown command fileinto"なら、冒頭へrequire ["fileinto"];を追加します。

セミコロン不足。 全コマンドの末尾に必要です。特にstopdiscardfileintoを確認します。

文字列の引用符不足。 フォルダー、アドレス、値には二重引用符が必要です。fileinto Newsletters;は失敗し、fileinto "Newsletters";が正解です。

フラグのバックスラッシュ。 \Flagged\Seen"\\Flagged""\\Seen"のように2本必要です。1本はエスケープとして扱われます。

フォルダーがない。 先にメールソフトで作成します。スクリプトとサーバーが対応しない限り、自動作成されません。

コードが大きすぎる。 数百行を超えるなら、一部を画面上のフィルターへ移せないか検討します。

関連記事

ワークフローの続きとなる関連ガイドに移動します。

TrekMail の運用と保護に必要な技術を使用します。確認すると、Cookie ポリシーに記載された限定的な分析と広告測定も許可されます。

TrekMail にサインイン

ダッシュボード、メールボックス、DNS にアクセスできます。

または

12 文字 パスワードが一致

または

再設定メールを送信しました

このメールアドレスのアカウントが存在する場合、パスワード再設定の手順をお送りしました。

続行すると、TrekMail の 利用規約 および プライバシーポリシーに同意したものとみなされます.