正規表現 · 4 min read · Dec 30, 2025
6.0 マッチングと正規表現 (regular expressions)
著者: Jari Aalto.
1.0 ドキュメントID
- 1.1 一般
- 1.2 Procmailとは?
- 1.3 略語と感謝
- 1.4 バージョン情報
- 1.5 ドキュメントのレイアウトとメンテナンス
- 1.6 提示されたレシピについて
- 1.7 レシピで使用される変数
- 1.8 “無駄なcatの使用賞”について
2.0 Procmailのポイント - 2.1 procmailの開発場所
- 2.2 Procmailリソース
- 2.3 Emacs用のProcmailモード
- 2.4 Procmailモジュールライブラリプロジェクト
- 2.5 UBEをフィルタリングするためのProcmailコード
3.0 ドライランテスト - 3.1 ドライランテストとは?
- 3.2 ドライラン後にFromフィールドが正常でない理由
- 3.3 procmail変数のデフォルト値を取得する
4.0 覚えておくべきこと - 4.1 最新のprocmailを取得する
- 4.2 Cshのチルダはサポートされていない
- 4.3 レシピは正しく書き始めること
- 4.4 SHELLを常に設定する
- 4.5 PATHを確認して設定する
- 4.6 常にログを保持する
- 4.7 ディレクトリにトレーリングスラッシュを追加しない
- 4.8 DELIVEREDという用語を忘れない
- 4.9 コメントを間違った場所に置かない
- 4.10 ブレースの配置
- 4.11 ローカルロックファイルの使用
- 4.12 グローバルロックファイル
- 4.13 すべての! * $をどこに置くべきか
- 4.14 自動返信を送信する場合はX-loopヘッダーを使用する
- 4.15 余分なシェルレイヤーを避け、SHELLMETASのコマンドを確認する
- 4.16 使用するシェルコマンドを考える
- 4.17 シェルプログラムを呼び出すときは絶対パスを使用する
- 4.18 レシピを一時的に無効にする
- 4.19 メッセージのバックアップを保持する
- 4.20 procmailレシピの順序
5.0 Procmailフラグ - 5.1 フラグの順序
- 5.2 レシピの最上部にHBフラグ(警告)
- 5.3 フラグwと|付きレシピ
- 5.4 フラグw、ロックファイルと|付きレシピ
- 5.5 フラグfとwを一緒に
- 5.6 フラグhとb
- 5.7 フラグhと/dev/nullへの沈下
- 5.8 フラグiとパイプフラグf
- 5.9 フラグr
- 5.10 フラグcの背景
- 5.11 ネストされたブロックの前のフラグcが子をフォークする
- 5.12 フラグcとフォークペナルティの理解
- 5.13 ネストされたブロックの前のフラグ
- 5.14 フラグaAeEチュートリアル
6.0 マッチングと正規表現 (regular expressions) - 6.1 正規表現における抽象化の哲学
- 6.2 マッチは大文字小文字を区別しない
- 6.3 Procmailは複数行マッチを使用する
- 6.4 ヘッダーはマッチングの前に展開される
- 6.5 スペース-タブ症候群の改善
- 6.6 感嘆符の処理
- 6.7 文字クラスを生成するためのルール
- 6.8 条件の最後のスペースをマッチさせる
- 6.9 先頭のバックスラッシュに注意
- 6.10 TOマクロの正しい使用
- 6.11 Procmailの正規表現エンジン
- 6.12 Procmailとegrepの違い
- 6.13 Procmailの最小マッチングの理解(ケチ vs. 貪欲)
- 6.14 \/と()\/の説明
- 6.15 ^^と^の説明
- 6.16 伝統的なANDing
- 6.17 伝統的なORing
- 6.18 デ・モルガンの法則を使用したORing
7.0 変数 - 7.1 変数の設定と解除
- 7.2 変数の初期化とsh構文
- 7.3 変数のテスト
- 7.4 $VARは何を意味するのか?
- 7.5 変数使用時の一般的な落とし穴
- 7.6 引用: シングルまたはダブルクォートの使用
- 7.7 引用: 外部プログラムへの値の渡し
- 7.8 外部プログラムからの値の受け取り
- 7.9 値Nで変数をインクリメント
- 7.10 値の比較
- 7.11 文字列: 与えられた文字列に何文字あるか?
- 7.12 文字列: トレーリング改行を取り除く方法。
- 7.13 文字列: 文字列の最後のN文字を導出する。
- 7.14 文字列: 文字列から部分一致を取得する。
- 7.15 文字列: Procmail文字列操作の例
- 7.16 メッセージがファイルされた場合にフラグを上げる方法
- 7.17 条件行のドル記号。
- 7.18 謎のfoo変数を見つける
- 7.19 コードを変数に格納する
- 7.20 ヘッダーを変数に取得する。
- 7.21 値を小文字に変換する
8.0 提案と雑多 - 8.1 procmailを高速化する
- 8.2 procmailインストールの例を参照
- 8.3 受信メールの統計を印刷する
- 8.4 クォータ外にUBEメールボックスを保存する
- 8.5 メッセージの最初の5-30行を使用する
- 8.6 スクリプトでcatまたはechoを使用する?
- 8.7 副作用として追加のシェルコマンドを実行する方法?
- 8.8 シェルスクリプトから”ok”の戻りステータスを強制する
- 8.9 自分の.procmailrcを他の人に公開する
- 8.10 日付を効率的に使用する
- 8.11 シンプルなヘッダーログを保持する
- 8.12 メッセージをgzippingする
- 8.13 emergency stop for your .procmailrc
9.0 スコアリング - 9.1 例によるスコアの使用
- 9.2 簡単なスコアチュートリアル
- 9.3 スコアの範囲
- 9.4 文字列の長さをカウントする
- 9.5 メッセージ内の行数をカウントする(行を追加する:ヘッダー)
- 9.6 本文がヘッダーより長いかどうかを判断する
- 9.7 最後のReceivedヘッダーをマッチングする
- 9.8 スコアリングで値範囲をテストする(bogofilter)
- 9.9 Content-Lengthヘッダーを追加する方法
- 9.10 メッセージサイズまたは行数をテストする
- 9.11 再帰的なincludercでカンマをカウントする
10.0 Formailの使用 - 10.1 formail -xでフィールドを取得する
- 10.2 formailの-rtスイッチを常に使用する
- 10.3 -rtを使用してFromアドレスを書き換える
- 10.4 formail -rtとResent-Fromヘッダー
- 10.5 メッセージを引用する
- 10.6 メッセージを引用せずに
- 10.7 返信メッセージにヘッダーと本文を含める方法
- 10.8 メッセージの先頭にテキストを追加する
- 10.9 メッセージの最後にテキストを追加する
- 10.10 引用されたメッセージの前にテキストを追加する
- 10.11 ファイルから追加のヘッダーを追加する
- 10.12 ダイジェストを分割する
- 10.13 メールボックス:個別ファイルに分割する
- 10.14 メールボックス:メールボックスからすべてのFromアドレスを抽出する
- 10.15 メールボックス:全メールボックスにprocmailレシピを適用する
- 10.16 メールボックス:各メールに対して一連のコマンドを実行する(メールボックスを分割する)
- 10.17 オプション-Dとキャッシュ
- 10.18 オプション-Dと本文のmessage-id
- 10.19 formail呼び出しを減らす(条件付きでフィールドを追加)
- 10.20 formail -A -aオプション
- 10.21 formail -e -sオプション
11.0 メーリングリストメッセージの保存 - 11.1 メーリングリストを検出するためのサブルーチンpm-jalist.rcの使用
- 11.2 プラスアドレス指定を使用する
- 11.3 追加情報のためのRFCコメントトリックを使用する
- 11.4 シンプルなメーリングリスト処理
- 11.5 TOに応じたアーカイブ
- 11.6 メーリングリストを検出するためのReturn-Pathの使用
12.0 Procmail、MIMEおよびHTML - 12.1 MIME文献
- 12.2 MIMEノート
- 12.3 MIMEまたはHTMLを扱うソフトウェア
- 12.4 MIMEコンテンツタイプapplication/ms-tnef
- 12.5 HTML MIMEメッセージをトラップする
- 12.6 HTMLメッセージに関する苦情
- 12.7 HTML本文をプレーンテキストに変換する
- 12.8 不要なMIME添付ファイル(HTML、vcard)を取り除く
- 12.9 誰かにHTMLページの内容をプレーンテキストで送信する
13.0 シンプルなレシピの例 - 13.1 保存: MHフォルダ – 番号付きメッセージ
- 13.2 保存: 月ごとのフォルダに
- 13.3 修正: フィルタリングの基本
- 13.4 修正: メッセージ本文の周りの空行を圧縮
- 13.5 修正: ヘッダーを常に同じ順序にシャッフル
- 13.6 サービス: 空のメッセージへの自動応答
- 13.7 サービス: Ping応答
- 13.8 サービス: procmailによるシンプルなバケーション
- 13.9 サービス: バケーションコードの例
- 13.10 サービス: 自動転送
- 13.11 サービス: 特定のメッセージのみを転送
- 13.12 サービス: ダイジェストを作成
- 13.13 キル: 広告ヘッダーとフッターを削除
- 13.14 キル: procmailによるシンプルなキルファイルレシピ
- 13.15 キル: 重複メッセージ
- 13.16 キル: シンプルなレシピによるスパムフィルター
- 13.17 キル: (un)subscribeメッセージ
- 13.18 時間: 一日一回のcronのようなジョブ
- 13.19 時間: 指定した時間にレシピを実行
- 13.20 時間: メールをトリガーしcronを使用する
- 13.21 デコード: Uudecode
- 13.22 デコード: MIME
- 13.23 メッセージの本文にコマンドを送信する方法
- 13.24 行に二つの単語をマッチさせるが、一つはマッチさせない
- 13.25 個人XXマクロを定義する方法
- 13.26 本文マッチにより件名を変更する方法
- 13.27 他のヘッダーに応じて件名を変更する方法
- 13.28 パラメータ付きプログラムを呼び出す方法
14.0 雑多なレシピ - 14.1 有効なMessage-Idヘッダーをマッチさせる
- 14.2 メッセージ内で二つのファイルを送信する
- 14.3 メッセージの過剰な引用
- 14.4 メッセージをページャにチャンクで送信する
- 14.5 メッセージが到着したときに特定の音を再生する
- 14.6 複数のOriginal-CcおよびOriginal-Toヘッダーを結合する
- 14.7 暗号化形式で敏感なメッセージを転送
15.0 ProcmailとPGP - 15.1 pgpメッセージを自動的に復号する
- 15.2 キーサーバからのキー取得
- 15.3 受信pgpキーを自動的に取得
16.0 Includercの使用 - 16.1 使用: 複数のrcファイル
- 16.2 使用: 条件付きでrcファイルを呼び出す
- 16.3 使用: rcファイルを自動的に読み込む
- 16.4 作成: rcファイルの命名
- 16.5 作成: procmail変数を保存する際の名前空間の使用
- 16.6 作成: rcファイル内の公開およびプライベート変数
- 16.7 一般的な目的のrcファイルを構築するための指針
- 16.8 includercスケルトン
17.0 メーリングリストサーバ
18.0 一般的なトラブル - 18.1 Procmailモード: 通常、配信、メールフィルタ。
- 18.2 Procmailをsendmail Mlocalメールフィルタデバイスとして使用
- 18.3 Procmailは8ビット文字を渡さない
- 18.4 ISPがprocmailのインストールにあまり興味がない
- 18.5 ISPがシステム全体のprocmailrcを持っている; これは良いアイデアですか?
- 18.6 Procmailはメールボックスとディレクトリの権限を変更する
- 18.7 コンパイル中にmboxの権限を660に変更する
- 18.8 .forwardファイルは実際のファイルでなければならない
- 18.9 procmailがすでにLDAの場合は.forwardを使用する
- 18.10 書き込みに失敗した場合、メールはメールキューに入れるべき
- 18.11 Qmail: procmailと連携させる方法
- 18.12 Qmail: Procmailは/var/spool/mailからのみファイルを探す
- 18.13 Qmail: procmail 3.11pre7のパッチをMaildirsで動作させる
- 18.14 AFS: HOMEがAFSセルにある場合にProcmailを使用する方法
- 18.15 助けて、ある馬鹿が私のアドレスを30のメーリングリストに送信した
- 18.16 助けて、Procmailがビープ音を鳴らし、コンソールに印刷する
- 18.17 助けて、procmailがメールをコンソールにダンプする
- 18.18 助けて、メールボックスのFrom_行が破損している
- 18.19 ユーザーのメールをHOMEではなく/var/spool/に向ける
- 18.20 NFSマウント/var/mailは悪いパフォーマンスを得る良い方法
- 18.21 sendmailの応答がLOGFILEに表示されない
- 18.22 procmailをコンパイルしロックスキームを選択する
- 18.23 多くのメールを転送すると重い負荷がかかる
- 18.24 MDA Procmailが失敗した場合、メールはどうなるか
- 18.25 Procmailは90Mbのメッセージ全体をメモリに読み込む
- 18.26 助けて、procmailが時々巨大なメモリの塊を使用する
- 18.27 Procmailが私の詳細なログでメモリ不足を示した
- 18.28 変数DEFAULTとORGMAIL
- 18.29 DEFAULTにメールを送信できない場合
- 18.30 変数DROPPRIVS
- 18.31 変数HOME
- 18.32 変数HOST
- 18.33 変数LINEBUF
- 18.34 変数LOGとLOGFILE
- 18.35 変数TRAP
- 18.36 変数UMASK
- 18.37 UMASKと権限
- 18.38 バックティックと”|”レシピのパフォーマンス差
- 18.39 Procmailの一時ファイル名
- 18.40 パラメータ$@
- 18.41 Procmail変数はヌル終端(ヌル文字列の検出)
- 18.42 FROMDAEMON TOとTOと大文字小文字の区別
- 18.43 TO_マクロの解読
- 18.44 TO_マクロとRFC 822
- 18.45 FROM_DAEMONの解読
19.0 技術的事項 - 19.1 終了コードのリスト
- 19.2 優先度コードのリスト
- 19.3 sendmailと-t
- 19.4 RFC822のReply-Toとformailの問題
- 19.5 ProcmailとIMAPサーバ
- 19.6 メールを処理するマシン
- 19.7 procmailをコンパイルしMAILSPOOLHOMEを選択する
20.0 Emacs用のProcmailソフトウェア - 20.1 Emacsとは
- 20.2 Emacs procmail-modeとProcmailコードチェック(Lint)
- 20.3 Gnusでprocmailを使用する理由
- 20.4 procmail用のGnusの設定 - 基本
- 20.5 procmail用のGnus - さらに詳しく
- 20.6 EmacsとGnus - スプールファイルの操作
- 20.7 Gnus記事のスニペット
21.0 RFC、コメントのリクエスト - 21.1 RFCとその管轄(アドレスの変更)
- 21.2 アドレスの変更に関するコメント
- 21.3 RFCと有効なメールアドレス文字
- 21.4 RFCとlogin-name@fdqn
- 21.5 RFCとメッセージの署名
- 21.6 RFCとUsenet新sgroupsでのMIMEの使用
- 21.7 一部のRFCポインタ
22.0 Eメールヘッダーの紹介 - 22.1 メールについてもっと知る(リソース)
- 22.2 アラン・ステッベンズによる講義
- 22.3 受信メッセージに適用
23.0 メッセージヘッダー - 23.1 正しいFromアドレス構文とは
- 23.2 X-UIDLヘッダーとは
- 23.3 最初のFrom_ヘッダーとは
- 23.4 メッセージ-IDヘッダー
- 23.5 Receivedヘッダー
- 23.6 Return-Path
- 23.7 Errors-To
- 23.8 X-Subscription-Info
- 23.9 Reply-Toヘッダー
- 23.10 Mail-Copies-Toヘッダー
- 23.11 Mail-Followup-ToおよびReply-To-Personalヘッダー
- 23.12 Content-LengthヘッダーとFrom_の仕様
- 23.13 CCコピーに関する道徳
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。