Добрый день! Подскажите как при помощи postfix запротоколировать письмо
content_filter и отправить его дальше, postfix сконифгурирован с SASLmaster.cf
smtp inet n - n - - smtpd
-o content_filter=filter:dummyfilter unix - n n - - pipe
user=filter argv=/etc/postfix/test.pl -f ${sender} -- ${recipient}test.pl
#!/usr/bin/perlopen(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]
У меня так:=== master.cf: ===
smtp inet n - y - 12 smtpd
-o content_filter=add-date:dummyadd-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 -wuse 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. кстати, кто знает нормальное решение для постфикса изменить дату в письмах на текущаю локальную? А то через перл как-то слишком уж жирно :(