apt-get install postfwd
id=R001; action=rcpt(sender/50/3600/REJECT limit of 50 recipients per hour for sender $$sender exceeded)
# STARTUP=1 # , CONF=/etc/postfix/postfwd.cf # IP , INET=127.0.0.1 # , PORT=10040 # , RUNAS="nobody" # , ARGS="--summary=600 --cache=600 --cache-rdomain-only --cache-no-size"
service postfwd restart
srv1:~# tail /var/log/mail.log Jun 9 14:14:18 srv1 postfwd2/master[37242]: postfwd2 1.35 starting Jun 9 14:14:18 srv1 postfwd2/master[37244]: Started cache at pid 37245 Jun 9 14:14:18 srv1 postfwd2/master[37244]: Started server at pid 37246 Jun 9 14:14:18 srv1 postfwd2/cache[37245]: ready for input Jun 9 14:14:18 srv1 postfwd2/policy[37246]: ready for input
# policy service - postfwd smtpd_recipient_restrictions = check_policy_service inet:127.0.0.1:10040, permit_sasl_authenticated, reject_unauth_destination # policy service - postfwd smtpd_end_of_data_restrictions = check_policy_service inet:127.0.0.1:10040
srv1:~# postfix reload postfix/postfix-script: refreshing the Postfix mail system
srv1:~# tail /var/log/mail.log | grep postfwd Jun 9 14:24:18 srv1 postfwd2/master[37244]: [STATS] postfwd2::policy 1.35: 1 requests since 0 days, 00:09:59 hours Jun 9 14:24:18 srv1 postfwd2/master[37244]: [STATS] Requests: 0.10/min last, 0.10/min overall, 0.10/min top Jun 9 14:24:18 srv1 postfwd2/master[37244]: [STATS] Dnsstats: 0.00/min last, 0.00/min overall, 0.00/min top Jun 9 14:24:18 srv1 postfwd2/master[37244]: [STATS] Hitrates: 0.0% ruleset, 0.0% parent, 0.0% child, 0.0% rates Jun 9 14:24:18 srv1 postfwd2/master[37244]: [STATS] Timeouts: 0.0% (0 of 0 dns queries) Jun 9 14:24:18 srv1 postfwd2/master[37244]: [STATS] 1 matches for id: R001
srv1:~# cpan Net::SMTP_auth Email::Address
srv1:~# mkdir /usr/local/bin/private srv1:~# useradd sendmail
#!/usr/bin/perl use strict; use warnings; use Net::SMTP_auth; use Email::Address; my $user = getpwuid( $< ); my $smtp_password = 'password'; my $smtp_default_password = 'password'; my $server = 'srv1.re-hash.org'; my $input = ''; my $to_string = ''; foreach my $line ( <STDIN> ) { $input .= $line; if ($line =~ /^To:/) { $to_string = $line; } } my @addrs = Email::Address->parse($to_string); if (0+@addrs eq 0) { die "No recipients"; } my $rec = $addrs[0]; $rec =~ s/\@/\\@/; my $smtp = Net::SMTP_auth->new('127.0.0.1', Port => 25, Timeout => 10, Debug => 0); die "Could not connect to SMTP server!\n" unless $smtp; if (!$smtp->auth('PLAIN', $user.'@'.$server, $smtp_password)) { $smtp->auth('PLAIN', 'default@'.$server, $smtp_default_password) or die "Auth failed!\n"; } $smtp->mail($user.'\@'.$server); $smtp->to($rec); $smtp->data(); $smtp->datasend($input); $smtp->dataend(); $smtp->quit;
srv1:~# chown -R sendmail:sendmail /usr/local/bin/private srv1:~# chmod -R 4711 /usr/local/bin/private
/* wrapper.c */ #define REAL_PATH "/usr/local/bin/private/sendmail.pl" main(ac, av) char **av; { execv(REAL_PATH, av); }
srv1:~# cc -o sendmail wrapper.c srv1:~# cp -a ./sendmail /usr/sbin/sendmail srv1:~# chown -R sendmail:sendmail /usr/sbin/sendmail srv1:~# chmod -R 4711 /usr/sbin/sendmail
Source: https://habr.com/ru/post/259937/
All Articles