web-dev-qa-db-ja.com

Postfix / Courier + MySQL仮想ユーザーのスパム用にProcmailフィルタリングを設定する

私はこれを行う方法についてのリソースを探していましたが、あまり運がありませんでした。

仮想ユーザーのバックエンドとしてMySQLを使用してPostfixとCourierに基づく動作中のMTA/MUAを実行しています。私は次の記事に基づいてシステムを作成しました。

https://help.ubuntu.com/community/PostfixCompleteVirtualMailSystemHowto

空のセクションまでは素晴らしかったです! SMTP/IMAPのセットアップはうまく機能しており、オンラインで見つけたいくつかの個別のドキュメントを使用して、SpamAssassinとClamAVもインストールできました。

私が助けを必要としているのは、仮想ユーザーで動作するように、Procmailをmailbox_commandとして使用するようにPostfixを設定することです。仮想ユーザーごとに異なるProcmailルールを個別に定義できるようにしたい。 Postfixのドキュメントを読みましたが、メールボックスコマンドのデフォルト機能はローカル(非仮想)ユーザーに対してのみ機能することを理解しています。

前もって感謝します!

更新:

この投稿以来、mailbox_commandは維持できないことに気づきました。代わりに、transport_mapsを使用してこれを行う方法を見つけました。以下の私自身の答えを読んでください。

4
AJ.

この記事は役に立ちました: http://www.linuxbackups.org/virtual-procmail

私が克服しなければならなかった2つの問題がありました。まず、このソリューションでは、ユーザー/トランスポートマップを保持する静的ファイルが必要です。仮想ソリューションが必要です。したがって、/ etc/postfix/transportを作成する代わりに、私のmain.cfは次のように述べています。

transport_maps = mysql:/etc/postfix/mysql_virtual_transport_maps.cf

これが私のmysql_virtual_transport_maps.cfです:

user = ******
password = ******
hosts = 127.0.0.1
dbname = postfix
table = mailbox
select_field = transport
where_field = username

これで「仮想」要件が解決されました。もう1つの問題は、ディレクトリ構造がprocmailrc.commonの例と異なることです。これが私のprocmailrc.commonです:

:0
* RECIPIENT ?? .*@\/.*$
{ DOMAIN = "$MATCH" }
#added RECIPIENT variable and we extract domain name
MAILDIR="$HOME/$DOMAIN/$USER@$DOMAIN"
DEFAULT="$MAILDIR/"
LOGFILE="./procmail.log"
VERBOSE=YES
#each user will set his own log file
NL="
"
WS=" "
SWITCHRC="$HOME/$DOMAIN/$USER@$DOMAIN/.procmail"

これが、同様のことをしようとしている可能性のある他の人に役立つことを願っています。

-aj

0
AJ.

1つのグローバルprocmailrcを作成し、ユーザーごとに次のようなルールを作成します。

:0
^[email protected]
| /usr/bin/procmail -m /etc/procmailrcs/someuser

/ etc/procmailrcs /内の各ファイルの通常の最終規則は、メッセージをパイプで配信することです(8)。

多くのユーザーがいて、この種のファイルを維持したくない場合は、代わりに、メールヘッダーを解析して、/ etc/procmailrcs /内のどのファイルが必要かを判断し、それに応じてprocmailを実行するスクリプトを作成し、それを設定することを検討してください。あなたのmailbox_commandとしてスクリプト。

0
dfranke