質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

ループ

ループとは、プログラミングにおいて、条件に合致している間、複数回繰り返し実行される箇所や、その制御構造を指します

Postfix

Postfixは、電子メールサーバソフトウェアで、 メールを配送するシステムMTAの一種です。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

Q&A

解決済

2回答

2079閲覧

procmailメール転送でループ

HAll05

総合スコア15

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

ループ

ループとは、プログラミングにおいて、条件に合致している間、複数回繰り返し実行される箇所や、その制御構造を指します

Postfix

Postfixは、電子メールサーバソフトウェアで、 メールを配送するシステムMTAの一種です。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

0グッド

0クリップ

投稿2021/09/15 05:43

編集2021/09/15 07:01

初心者ですがprocmailについてご教授頂けると幸いです。
現在procmailを使用してスパム判定されたメールをスパムメール受信用アドレスに転送するという試みをしております。
具体的なテスト内容はtest@test.comに送ったスパムメールをspammail@test.comに転送という形にしております。procmailの設定は個別の.forward.procmailrcではなく訳があり/etc/procmailrcでやっております。
★現在の/etc/procmailrcの設定内容は以下の通りです。
SHELL=/bin/bash
PATH=/usr/bin:/bin
MAILDIR=$HOME/Maildir/cur
DEFAULT=$HOME/Maildir/cur
LOGFILE=$MAILDIR/procmail.log 
VERBOSE=ON

:0
*^X-Spam-status: Yes
! spammail@test.com

となっております。
★起きている事象
スパムメールを送ったところspammail@test.comに【Undeliverd Mail】として転送される。

★原因の予想
おそらくspammail@test.comに飛んだメールがもう一度フィルタリングされ自身にメールを送るという行動を永遠と繰り返した結果、ループし【Undeliverd Mail】になっている。

★質問
起きている事象の解決策をご教授いただきたいです。
目標:スパムメールが【Undeliverd Mail】ではなく正確に転送されるようになる。

※追記として現状の設定の! spammail@test.comのところを別の環境にいる別ドメインのメールアドレスにすると正常に転送することが出来ます。例! spammail@test.com→! xxxxx@yhoo.co.jpこれだと正常に転送されます。
同環境内だからこそフィルターに引っ掛かり続けているのだと感じます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2021/09/15 06:27 編集

.forwardでないとすると、メールをprocmailに渡すのはどういう方法でしょうか?
HAll05

2021/09/15 06:39

すみません。質問をくみ取れていない可能性があるのですがprocmailは個別フィルタリングを行うときは、/home/user/.forward、/home/user/.procmailrcの設定が必要で全体にフィルタリングする時は/etc/procmailrcの認識です。 そして上記の設定内容は全体フィルタリングの/etc/procmailrcの中です。これで一応スパムの振り分けは出来ております。スパムでないメールは正しい受信者へ。スパムメールは別メールアドレスへ(別メールアドレスには遅れていますが上記のエラーとして届いています。) そしてこの二つの設定の併用は不可と認識していたのですが可能なのでしょうか。また併用すれば現在の問題は解消できますでしょうか。 もし可能であればどう記入するのがよいのでしょうか。
TaichiYanagiya

2021/09/15 07:10

main.cf で「mailbox_command = /usr/bin/procmail」と設定しているのですか? OS, postfix, procmail のバージョン、ループしているとわかるログを教えてください。
HAll05

2021/09/15 07:25

main.cf で「mailbox_command = /usr/bin/procmail」と設定しているのですか? →postfixですねよね。はい。その通りに設定しております。 OS, postfix, procmail のバージョン、ループしているとわかるログを教えてください。 →大変申し訳ありません。諸事情からログを乗せることが出来ません。。申し訳ありません。 ただ届いている【Undeliverd Mail】にはX-Postfix;mail forwarding loop for spammail@test.comと記載があります。 記載した通りフィルターに再度引っ掛かりループしていると仮定していただけいるとありがたいです。
otn

2021/09/15 07:55

> →postfixですねよね。はい。その通りに設定しております。 それを聞く質問でした。どこかに設定しないとprocmailに渡らないので。
guest

回答2

0

ベストアンサー

/etc/procmailrc で何とかできればいいのでしょうけれど、わかりませんでした。

代替方法として、mailbox_command_maps で spammail 宛のメールのみ、別の procmailrc ファイルを使うようにするといいと思います。

  • /etc/postfix/main.cf (追記)
mailbox_command_maps = hash:/etc/postfix/mailbox_command
  • /etc/postfix/mailbox_command
spammail /usr/bin/procmail -t -m USER=${user} DOMAIN=${nexthop} /etc/procmailrc_nofilter ※設定後、"postmap /etc/postfix/mailbox_command" で /etc/postfix/mailbox_command.db ファイル(hash 形式)に変換する。 ※/usr/bin/procmail 以外のローカル配送プログラムに置き換えてもよい。
  • /etc/procmailrc_nofilter
    (省略、「^X-Spam-status: Yes」箇所を削除したもの)

投稿2021/09/15 14:31

編集2021/09/16 02:56
TaichiYanagiya

総合スコア12148

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

HAll05

2021/09/15 15:20

ご回答ありがとうございます。 /etc/postfix/mailbox_commandの以降の手順について質問させてください。 ・postmap /etc/postfix/mailbox_commandをコマンド実行後、「spammail /usr/bin/procmail -t -m USER=${user} DOMAIN=${nexthop} /etc/procmailrc_nofilter」/etc/postfix/mailbox_commandに記載するということでしょうか。。 ・/etc/procmailrc_nofilterを新規作成し「^X-Spam-status: Yes」以外の上記の設定(私が現在記載しているもの)を入れるということであっていますでしょうか。。。 申し訳ありませんが教えていただけると嬉しいです。
TaichiYanagiya

2021/09/16 02:57

postmap コマンドは /etc/postfix/mailbox_command 記載後に実行します。 procmailrc_nofilter はご認識のとおりです。
HAll05

2021/09/16 04:35

問題が解決したように感じます!ありがとうございます!
guest

0

procmailrc

1:0 2* ^X-Spam-status: Yes 3| /bin/sed '/^X-Spam-status:/d' | /usr/lib/sendmail spammail@test.com 4 5または、 6 7:0 8* ^X-Spam-status: Yes 9| /bin/sed '/^X-Spam-status:/d' | /bin/mail spammail@test.com

でどうでしょうか。

投稿2021/09/15 07:58

otn

総合スコア84806

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

HAll05

2021/09/15 08:44

お答えありがとうございます。 返答の通り設定を行ったのですが :0 * ^X-Spam-status: Yes | /bin/sed '/^X-Spam-status:/d' | /usr/lib/sendmail spammail@test.com では、今まで私でしていた時と同じ結果に。(procmailのログも同じような感じでした。) :0 * ^X-Spam-status: Yes | /bin/sed '/^X-Spam-status:/d' | /bin/mail spammail@test.com では、writingのエラーが出て【Undeliverd Mail】も届かない状態になってしまいました。
otn

2021/09/15 08:57 編集

/bin/mail はありますか?無ければインストールを。
HAll05

2021/09/15 09:09

認識不足でした。申し訳ありません。 :0 * ^X-Spam-status: Yes | /bin/sed '/^X-Spam-status:/d' | /bin/mail spammail@test.com を/bin/mailをインストール後、試したところ【Undeliverd Mail】ではないメールが届いたのですが、本来の送り主、件名、本文も何もない状態で届くようになりました。 そのまま転送しているというわけではなさそうなのですがしょうがないのでしょうか。
otn

2021/09/15 09:23

おかしいですね。 | /bin/sed '/^X-Spam-status:/d' | tee /tmp/aaaa | /bin/mail spammail@test.com にして、/tmp/aaaa は空ですか?
HAll05

2021/09/15 09:30

/tmp/aaaaにはしっかり表示されました。 申し訳ありません。また説明が足りていないところがあったので補足させていただきます。 現在、確認はthunderbirdを使用しております。 そして、現在thunderbird上ではメールは届くのですが本来の送り主、件名、本文も何もない状態です。(添付ファイルがあり、そちらを開くとメールが見れました。開かなければ何もないまっさらなメールとして届きます。)
HAll05

2021/09/15 09:38

spammail@test.comだけはフィルタに引っ掛からないようにするなどループ回避の方法はないでしょうか。。。?
otn

2021/09/15 10:14

なるほど。/bin/mailで送るとThunderbirdだと添付ファイル扱いと言うことですね。 > spammail@test.comだけはフィルタに引っ掛からないようにするなどループ回避の方法はないでしょうか。。。? mailbox_command = /usr/bin/procmail で直接procmailを起動するのでなく、自作のプログラムを起動するようにして、そのプログラムで宛先をみて必要に応じてprocmailを起動するようにすれば出来ます。
HAll05

2021/09/15 12:28

なるほどです。。。 >自作のプログラムを起動するようにして、そのプログラムで宛先をみて必要に応じてprocmailを起動するようにすれば出来ます。 むずかしい感じでしょうか。もしよければご教示いただけると嬉しいです。。 やはり現状のエラーメールではなく正しく転送する方法はusr/bin/procmailの設定だけでは難しいのでしょうか。。
otn

2021/09/15 12:58

テストしてみましたが、 | /bin/sed '/^X-Spam-status:/d' | /usr/lib/sendmail spammail でうまく行きますね。 もう一度、エラー内容を調べては? > むずかしい感じでしょうか。もしよければご教示いただけると嬉しいです。。 書いたとおりですが。プログラミング経験が無いと言うことなら難しいでしょうね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問