The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"postfix content_filter perl"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [ Отслеживать ]

"postfix content_filter perl"  
Сообщение от gorecs (ok) on 17-Апр-09, 18:29 
Добрый день! Подскажите как при помощи postfix запротоколировать письмо
content_filter и отправить его дальше, postfix сконифгурирован с SASL

master.cf
smtp      inet  n       -       n       -       -       smtpd
                -o content_filter=filter:dummy

filter    unix    -    n    n    -    -    pipe  
    user=filter argv=/etc/postfix/test.pl -f ${sender} -- ${recipient}

test.pl
#!/usr/bin/perl

open(eml,">/var/spool/postfix/filter/$ARGV[0].$$.eml");
open(sendmail,"| /usr/sbin/sendmail -G -i @ARGV")or die "Sendmail ERROR: $!\n";
while(<STDIN>) {  print eml"$_";  print sendmail"$_"; }
    close(eml); close(sendmail);

при отправке в логаз пришел такое


Apr 17 18:18:45 mail sendmail[24609]: n3HEIjRe024609: to=user@gmail.com, ctladdr=from@domain.ru (626/627), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30497, relay=[0.0.0.0] [0.0.0.0], dsn=4.0.0, stat=Deferred: Connection refused by [0.0.0.0]

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "postfix content_filter perl"  
Сообщение от Sarge (??) on 17-Апр-09, 20:26 
У меня так:

=== master.cf: ===
smtp      inet  n   -    y   -    12    smtpd
                                -o content_filter=add-date:dummy

add-date    unix - n  n  -  20  pipe
        flags=Rq user=nobody argv=/usr/libexec/postfix/add-date.pl
        -f ${sender} -- ${recipient}


=== add-date.pl: ===
#!/usr/bin/perl -w

use POSIX qw(setlocale LC_ALL strftime);
POSIX::setlocale( LC_ALL, "C" );

my $SENDMAIL="/usr/sbin/sendmail -G -i @ARGV"; # NEVER NEVER NEVER use "-t" here.

#open (PIPE, "> /tmp/add-date.txt");

my $line;
my $date_changed_flag=0;
my $blank_line_flag=0;
my $current_date=POSIX::strftime("%a, %d %b %Y %H:%M:%S %z", ( localtime(time()) ));

open (PIPE, " | $SENDMAIL");

while ($line=<STDIN>) {
        $blank_line_flag=1 if $line=~m/^\r?\n$/;
        if ($blank_line_flag==0 && $date_changed_flag==0) {
                if ( $line =~ s/^Date:( |\t)/X-Original-Date: / ) {
                        $date_changed_flag=1; print PIPE "Date: $current_date\n";
                }
        }
        print PIPE $line;

}


PS. кстати, кто знает нормальное решение для постфикса изменить дату в письмах на текущаю локальную? А то через перл как-то слишком уж жирно :(

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру