Home
Packages
Forums
Wiki
GitLab
Security
AUR
Download
コンテンツにスキップ
メインメニュー
メインメニュー
サイドバーに移動
非表示
案内
メインページ
目次
コミュニティに貢献
最近の出来事
おまかせ表示
特別ページ
交流
ヘルプ
貢献
最近の更新
最近の議論
新しいページ
統計
リクエスト
ArchWiki
検索
検索
表示
アカウント作成
ログイン
個人用ツール
アカウント作成
ログイン
Procmailのソースを表示
ページ
議論
日本語
閲覧
ソースを閲覧
履歴を表示
ツール
ツール
サイドバーに移動
非表示
操作
閲覧
ソースを閲覧
履歴を表示
全般
リンク元
関連ページの更新状況
ページ情報
表示
サイドバーに移動
非表示
←
Procmail
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
[[Category:メール]] [[en:Procmail]] {{Warning|1=Procmail はメンテナンスが止まっています (最後の更新は2001年です)。開発者は他のプログラムを使うことを推奨しています [https://marc.info/?l=openbsd-ports&m=141634350915839&w=2]。代替としては、例えば 、{{AUR|courier-maildrop}} があります。}} Procmail はメールをフィルタリング・ソート・保存するためのプログラムです。メールクライアントとメールサーバーの両方で使うことができます。使い方次第でスパムをフィルタリングしたり、ウィルスチェックを行ったり、自動返信メールを送信したりすることができます。 この記事では procmail の設定方法を説明します。procmail を使用するメールクライアント ([[mutt]], [[nmh]] など) あるいはメールサーバー ([[sendmail]], [[postfix]] など) は既に使える状態になっていることが前提です。また、正規表現に関する基本的な知識も必要です。あくまで最小限の説明だけしかここでは説明しません。詳しい解説は {{man|5|procmailrc}} を見てください。 ==インストール== {{Pkg|procmail}} パッケージを[[インストール]]してください。 ==設定== メールクライアントの設定の場合は {{ic|~/.procmailrc}} に、メールサーバーが使用する場合は {{ic|/etc/procmailrc}} に設定を保存します。 {{Note|受信済みのメールを使って procmail の設定をテストするときは注意してください。設定ファイルにエラーが存在すると自動的にメッセージが送信者に送り返される可能性があります。恥ずかしい状況にならないように、{{ic|procmail}} に {{ic|-t}} を指定して返答をオフにするか、{{ic|DELIVERED}} 環境変数を設定すると良いでしょう ({{man|5|procmailrc}})。}} 設定は2つのセクションで構成されています: '''assignments''' と '''recipes''' です。 ===アサインメント=== アサインメントセクションでは procmail の変数を定義します: {{bc| <nowiki>PATH=/bin:/usr/bin MAILDIR=$HOME/Mail DEFAULT=$HOME/Mail/inbox LOGFILE=/dev/null SHELL=/bin/sh</nowiki> }} ===レシピ=== レシピはメインのセクションであり、実際にアクションを実行するフィルターを定義します。レシピのフォーマットは以下のとおりです: {{bc| :0 [flags] [ : [locallockfile] ] <zero or more conditions (one per line)> <exactly one action line> }} 条件は正規表現で記述します。特殊なオプションが多少追加されています。条件には一番最初に必ずアスタリスクを書きます。 アクションに指定できるのはメールボックスの名前か外部プログラムだけです。 ====フラグとロックファイル==== 基礎的なレシピではフラグは必要ありません。ただし外部コマンドを呼び出す場合は必要になるかもしれません。以下は最もよく使われているフラグです: * '''f''': パイプをフィルターとして扱います。 * '''w''': フィルターやプログラムが終了するのを待機して終了コードを確認します (通常は無視されます)。フィルターの終了コードが異常だった場合、テキストはフィルタリングされません。 {{ic|:0}} の後に {{ic|:}} を使うことでロックファイルが使用できます。(ほぼ同時にメールが複数届いて) 同時に複数の procmail のインスタンスが動作した場合に問題が発生するようなときはロックファイルが必要です。 ロックファイルの名前は {{ic|:}} の後ろに設定できます。 ====条件==== 条件は先頭にアスタリスクが付き、以下のように正規表現で記述します: {{bc|* ^From.* someperson@\w+.com}} ====アクション==== アクションに指定するのは以下のような文字列だけでも機能します: {{bc|work}} 上記の場合、条件を満たしたメールは {{ic|work}} 受信箱に保存されます。 アクションの先頭文字はパイプにすることもでき、その場合はコマンドの標準入力にメッセージが渡されます。例: | /usr/bin/vendor_perl/spamc デフォルトでは、レシピのアクションが実行されたら、処理は終了です。 '''f''' フラグを使用した場合、コマンドによってメッセージが改変されレシピの処理は続きます。例えば、spamassassin コマンドでメールにスパムのレベルを示すヘッダーが追加され、他のレシピがそのヘッダーを使用して、メールをブロックしたり別のメールボックスにメールを保存することができます。 ==ヒントとテクニック== ===Spamassassin=== 以下は spamassassin を使ってスパムをブロックする例です。あらかじめ spamassassin をインストールして機能する状態にする必要があります。 {{bc|<nowiki> # By using the f and w flags and no condition, spamassassin is going add the X-Spam headers to every single mail, and then process other recipes. # No lockfile is used. :0fw | /usr/bin/vendor_perl/spamc # Messages with a 5 stars or higher spam level are going to be deleted right away # And since we never touch any inbox, no lockfile is needed. :0 * ^X-Spam-Level: \*\*\*\*\* /dev/null # If a mail with spam-status:yes was not deleted by previous line, it could be a false positive. So its going to be sent to an spam mailbox instead. # Since we do not want the possibility of one procmail instance messing with another procmail instance, we use a lockfile :0: * ^X-Spam-Status: Yes $HOME/mail/Spam </nowiki>}} ===ClamAV=== [[ClamAV]] アンチウイルスを使用する例: {{bc|<nowiki> # We make sure its going to use the sh shell. Mostly needed for mail-only account that have /sbin/nologin as shell SHELL=/bin/sh # We will scan the mail with clam using the standard input, and saving the result on the AV_REPORT variable AV_REPORT=`clamdscan --stdout --no-summary - |sed 's/^stream: //'` # We check if the word FOUND was in the result and save "Yes" or "No" according to that VIRUS=`echo $AV_REPORT|sed '/FOUND/ { s/.*/Yes/; q }; /FOUND/ !s/.*/No/'` # formail is a filter that can alter a mail message, while keeping the correct format. We use it here to add/alter a header called # X-Virus with either value Yes or No :0fw | formail -i "X-Virus: $VIRUS" # And if we just added "X-Virus: Yes", we will also add another header with the scan result, and alter the subject, again, with the scan result. # Since we are using the f flag, the mail is going to be delivered anyway. :0fw * ^X-Virus: Yes | formail -i "X-Virus-Report: $AV_REPORT" -i "Subject: [Virus] $AV_REPORT" </nowiki>}} ===別のメールボックスにメールをフィルタリング=== あなたの同僚がくだらないジョークや不真面目なメールは''転送''で送ってくるが、仕事に関するメールは直接送信してくるような場合、以下の設定で転送メール(つまりほとんどは仕事と無関係なメール)を別のメールボックスに保存できます: {{bc|<nowiki> :0: * ^From.*coworker@domain.com * ^Subject.*FW: $HOME/mail/jokes </nowiki>}} ===Postfix パイプ=== [[postfix]] からパイプするには {{ic|/etc/postfix/main.cf}} を開いて以下を追加してください: {{bc|<nowiki> mailbox_command = /usr/bin/procmail -a "$EXTENSION" </nowiki>}} {{ic|postfix.service}} を[[systemd#ユニットを使う|リロード]]すると、メールは procmail に送信されるようになります。 ===Dovecot に送信=== [[Dovecot]] にメールを転送するには以下のアサインメントを変更してください。 DELIVER が最初に試行され、その後に DEFAULT が使われます。 {{bc|<nowiki> DELIVER="/usr/lib/dovecot/deliver -d $LOGNAME" DEFAULT="$HOME/Maildir/" MAILDIR="$HOME/Maildir/" </nowiki>}} 上記の設定で Dovecot にはいつでも最新のデータベースが作られるようになります。 それからスパムメールを弾くには: {{bc|<nowiki> # deliver spam to spam folder :0 w * ^X-Spam-Status: Yes | $DELIVER -m Spam # deliver to INBOX and stop :0 w | $DELIVER </nowiki>}} 詳しくは https://wiki2.dovecot.org/procmail を見てください。 == 参照 == * [http://www.procmail.org/ Procmail ホームページ] * [https://web.archive.org/web/20151013184044/http://www.procmail.org/ Last working version of the Procmail Homepage from the Web Archive]
このページで使用されているテンプレート:
テンプレート:AUR
(
ソースを閲覧
)
テンプレート:Bc
(
ソースを閲覧
)
テンプレート:Ic
(
ソースを閲覧
)
テンプレート:Man
(
ソースを閲覧
)
テンプレート:Note
(
ソースを閲覧
)
テンプレート:Pkg
(
ソースを閲覧
)
テンプレート:Warning
(
ソースを閲覧
)
Procmail
に戻る。
検索
検索
Procmailのソースを表示
話題を追加