タイトル | : Re^2: Delivered-To: では?だめですか? |
記事No | : 5188 |
投稿日 | : 2005/09/20(Tue) 06:27 |
投稿者 | : まっきー |
早速コンテンツフィルタを試してみました。
設定は下記のとおりです。(FreeBSD5.3.0)
まず、/usr/local/etc/postfix/master.cfを下記のように編集 --ここから--------------------------------------------------------------------------- smtp inet n - n - - smtpd -o content_filter=filter:dummy filter unix - n n - 10 pipe flags=Rq user=filter argv=/usr/home/filter/filter_test -f ${sender} -- ${recipient} --ここまで---------------------------------------------------------------------------
そして、/usr/home/filter/filter_testという名前のシェルスクリプトを作成。 ---ここから-------------------------------------------------------------------------- #!/bin/sh
# Simple shell-based filter. It is meant to be invoked as follows: # /path/to/script -f sender recipients...
# Localize these. INSPECT_DIR=/var/spool/filter SENDMAIL="/usr/sbin/sendmail -i"
# Exit codes from <sysexits.h> EX_TEMPFAIL=75 EX_UNAVAILABLE=69
# Clean up when done or when aborting. trap "rm -f in.$$" 0 1 2 3 15
# Start processing. cd $INSPECT_DIR || { echo $INSPECT_DIR does not exist; exit $EX_TEMPFAIL; } cat >in.$$ || { echo Cannot save mail to file; exit $EX_TEMPFAIL; }
# Specify your content filter here. /usr/home/filter/filter.php <in.$$ || { echo Message content rejected; exit $EX_UNAVAILABLE; }
#$SENDMAIL "$@" <in.$$
exit $? --ここまで-----------------------------------------------------------------------------
PHPスクリプト/usr/home/filter/filter.phpを作成 --ここから----------------------------------------------------------------------------- #!/usr/local/bin/php -q
<?php
main();
/* Main */ function main(){
//メールを標準入力から読み込み $j = 0; $stdin = fopen ('php://stdin' , 'r'); while (!feof ($stdin)){ //一行ずつ配列に格納 $buf_ary[$j] = fgets($stdin, 4096); $j++; } fclose ($stdin);//Get Mail
//メールをテキストに保存 $fp = fopen("/home/filter/mail.txt", "a"); foreach($buf_ary as $val){ fwrite($fp,$val); } fclose($fp); }
?> --ここまで-------------------------------------------------------------------------------
BCCアドレスを判別するという課題がありますので、自作フィルタプログラムで送信したメールをテキストに保存してみました。
この例ではToに"Hoge" <to-user@hoge.com>を指定し、Bccにbcc-user@sample.comを指定しました。 下記は保存されたテキストファイルですが、やはり、bcc-user@sample.comに送るメールかどうかの判別がつきません。 やはり、ユーザーごとに送信先の制限を行うのは無理なのでしょうか?とほほ...。 --ここから------------------------------------------------------------------------------- Return-Path: <test1@mail2.sample.com> Received: from w166 (w166 [192.168.0.235]) by mail2.sample.com (Postfix) with SMTP id B0E516175; Mon, 19 Sep 2005 15:56:49 -0500 (CDT) Message-ID: <00a401c5bd5c$f1aa06e0$eb00a8c0@sample.com> From: "Test" <test1@mail2.sample.com> To: "Hoge" <to-user@hoge.com> Subject: Test Date: Mon, 19 Sep 2005 15:58:50 -0500 MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset="iso-8859-1"; reply-type=original Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2900.2180 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180
Test Mail --ここまで-------------------------------------------------------------------------------
ちなみに、おやじさんの下記ののページに [Postfixの設定] Postfixにフィルタ処理をさせるため、/etc/postfix/main.cf に設定を行います。 と書かれていますが、正しくは/etc/postfix/master.cfではないでしょうか? もし、main.cfでも構わないんだったらごめんなさい。
http://www.aconus.com/~oyaji/suse9.2/smtp-mysql-spamassassin-suse.htm
以上、他になにか気がついた点等ございましたら、アドバイスをよろしくお願いいたします。
|