Где почитать

Что на этом работает

Тэги

mssql mysql asterisk windows

Партнеры и друзья


Немного конфигурации для Postfix чтобы уверенно начать бороться с спамом
Это важно В файле main.cf должно быть следующее

  • ;### Checks to remove badly formed email
  • smtpd_helo_required = yes strict_rfc821_envelopes = yes disable_vrfy_command = yes unknown_address_reject_code = 554 unknown_hostname_reject_code = 554 unknown_client_reject_code = 554 smtpd_helo_restrictions = permit_mynetworks, reject_invalid_hostname, regexp:/etc/postfix/helo.regexp, permit ;### When changing sender_checks, this file must be regenerated using postmap , to ;generate a Berkeley DB smtpd_recipient_restrictions = check_client_access hash:/etc/postfix/helo_client_exceptions check_sender_access hash:/etc/postfix/sender_checks, reject_invalid_hostname, ### Can cause issues with Auth SMTP, so be weary! reject_non_fqdn_hostname, ################################## reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unknown_sender_domain, reject_unknown_recipient_domain, permit_mynetworks, reject_unauth_destination, ;Add RBL exceptions here, when changing rbl_client_exceptions, this ;file must be regenerated using postmap , to generate a ;Berkeley DB check_client_access hash:/etc/postfix/rbl_client_exceptions, reject_rbl_client cbl.abuseat.org, reject_rbl_client sbl-xbl.spamhaus.org, reject_rbl_client bl.spamcop.net, reject_rhsbl_sender dsn.rfc-ignorant.org, check_policy_service inet:127.0.0.1:60000 permit
    Таким был мой конфиг изначально.

    Опубликовано 2012-03-07 23:13:00


    Находится в поиске с названиями
    Ссылки о "Postfix - убийца спама" на других сайтах

      Я использую для проверки поля helo в Postfix файл helo.regexp где описано по каким правилам кого пускать, кого нет.
      Вот небольшая часть примера

      
      ; вот к примеру как я закрыл доступ доменам из зоны kiev.ua которые являются open relay
      ; сюда попали epro.kiev.ua, ilab.kiev.ua, sky-net.kiev.ua, get-up.kiev.ua, host-ua.kiev.ua
      ; () использую для набора, | использую как конструкцию разделителя набора
      ; \. так экранирую точку в имени домена
      ; ^ указатель на начало строки и $ указатель на окончание строки
      
      /^(epro|ilab|sky-net|get-up|host-ua)\.kiev\.ua$/ 550 BAN Spammer ; и еще пример против тех, кто в поле helo пишет helo=[< ip.add.re.ss >] /^\<\[([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})\]\>$/ 550 IP in helo not acceptable [2]

      Опубликовано 2012-03-06 14:12:00


      Находится в поиске с названиями
      Ссылки о "Пример использования regexp в файле helo.regexp" на других сайтах

        Рабочий пример для пограничного почтового сервера.
        --> main.cf
        // Данным куском сказано как обрабатывать запросы HELO // и в каком порядке

        smtpd_helo_restrictions = permit_mynetworks,
          check_helo_access regexp:/etc/postfix/helo.regexp,
          reject_non_fqdn_hostname, reject_unknown_hostname, reject_invalid_hostname,
          permit
        

        // Другой пример // поменяем местами строки
        smtpd_helo_restrictions = permit_mynetworks,
           reject_non_fqdn_hostname, reject_unknown_hostname, reject_invalid_hostname,
           check_helo_access regexp:/etc/postfix/helo.regexp,
           permit
        

        В первом случае, если Вам надо будет добавить в "белый" список некий узел, который нельзя определить то все пройдет гладко, если вы его опишите как
        /^vasya.pupkin$/      OK
        

        И все красиво отработает, тоесть письмо полученной с таким HELO попадет к полчателю.
        А вот второй пример, где поменяли местами правила, до вашего разрешения проверка не дойдет и письмо не будет получено, ибо вначале перед проверкой файла с правилами стоят четкие указания отбрасывать всех, кто не соответствует FQDN. А именно reject_non_fqdn_hostname. Здесь оно будет убито и до файла с правилами не добежит.

        Опубликовано 2011-11-16 18:42:00


        Находится в поиске с названиями
          Postfix Performance Tuning
          Postfix: документация postfix, ссылки, обмен опытом
          Настройка почтового сервера на базе Postfix
          Установка и настройка Postfix
        Ссылки о "Использование helo.regexp" на других сайтах

          Что нам для этого надо.

          1. Установленный Potfix
          2. Прямые руки
          3. файлы конфигурации ( master.cf, virtual, transport )
          4. Скрипт автореплая, файл с текстом автореплая, UID пользователя из под которого стартует Postfix
          Это код файла reply.pl

          
          #!/usr/bin/perl -w
          #
          # inforeply.pl - Automatic email reply.
          #
          # All messages are logged to your mail log. Check the
          # log after executing the script to see the results.
          #
          # Set $UID to the uid of the process that runs the script.
          # Check the entry in master.cf that calls this script. Use
          # the uid of the account you assign to the user= attribute.
          # If you want to test the script from the command line,
          # set $UID to your own uid.
          #
          # Set $ENV_FROM to the envelope FROM address you want on
          # outgoing replies. By default it's blank, which will
          # use the NULL sender address <>. You can set it to an
          # address to receive bounces, but make sure you don't set
          # it to the same address that invokes the program, or
          # you'll create a mail loop.
          #
          # Point $INFOFILE to a text file that contains the text of
          # the outgoing reply. Include any headers you want in the
          # message such as Subject: and From:. The To: header is
          # set automatically based on the $ENV_FROM address. Make
          # sure you have an empty line between your headers and the
          # body of the message.
          #
          # If necessary, change the path to sendmail in $MAILBIN.
          #
          # @MAILOPTS contains options to sendmail. Make changes if
          # necessary. The default options should work in most
          # situations.
          #
          # The calls to syslog require that your Perl installation
          # converted the necessary header files. See h2ph in your
          # Perl distribution.
          #
          
          require 5.004;  # for setlogsock in Sys::Syslog module
          
          use strict;
          use Sys::Syslog qw(:DEFAULT setlogsock);
          
          #
          # Config options. Set these according to your needs.
          #
          my $UID = 91;
          my $ENV_FROM = "Reply from My Company Name";
          my $INFOFILE = '/etc/postfix/'.$ARGV[1].'.msg';
          my $MAILBIN = "/usr/sbin/sendmail";
          my @MAILOPTS = ("-oi", "-tr", "$ENV_FROM");
          my $SELF = "reply.pl";
          #
          # end of config options
          my $EX_TEMPFAIL = 75;
          my $EX_UNAVAILABLE = 69;
          my $EX_OK = 0;
          my $sender;
          my $euid = $>;
          
          $SIG{PIPE} = \&PipeHandler;
          $ENV{PATH} = "/bin:/usr/bin:/sbin:/usr/sbin";
          
          setlogsock('unix');
          openlog($SELF, 'ndelay,pid', 'user');
          
          #
          # Check our environment.
          #
          if ( $euid != $UID ) {
            syslog('mail|err',"error: invalid uid: $> (expecting: $UID)");
              exit($EX_TEMPFAIL);
              }
          
          if ( @ARGV != 2 ) {
          syslog('mail|err',"error: invalid invocation (expecting 1 argument)");
          exit($EX_TEMPFAIL);
          } else {
          
          $sender = $ARGV[0];
          
          if ( $sender =~ /([\w\-.%]+\@[\w.-]+)/ ) {   
          
          # scrub address
          $sender = ;
          
          } else {
           syslog('mail|err',"error: Illegal sender address");
           exit($EX_UNAVAILABLE);
          }
          
          }
          
          if (! -x $MAILBIN ) {
          syslog('mail|err', "error: $MAILBIN not found or not executable");
          exit($EX_TEMPFAIL);
          }
          
          if (! -f $INFOFILE ) {
          syslog('mail|err', "error: $INFOFILE not found");
          exit($EX_TEMPFAIL);
          }
          
          #
          # Check sender exceptions.
          #
          if ($sender eq "" || $sender =~ /^owner-|-(request|owner)\@|^(mailer-daemon|postmaster)\@/i) {
          exit($EX_OK);
          }
          
          #
          # Check message contents for Precedence header.
          #
          
          while (  ) {
          last if (/^$/);
          exit($EX_OK) if (/^precedence:\s+(bulk|list|junk)/i);
          }
          
          #
          # Open info file.
          #
          
          if (! open(INFO, "<$INFOFILE") ) {
          syslog('mail|err',"error: can't open $INFOFILE: %m");
          exit($EX_TEMPFAIL);
          }
          
          #
          # Open pipe to mailer.
          #
          my $pid = open(MAIL, "|-") || exec("$MAILBIN", @MAILOPTS);
          
          #
          # Send reply.
          #
          
          print MAIL "To: $sender\n";
          print MAIL while ();
          
          if (! close(MAIL) ) {
          syslog('mail|err',"error: failure invoking $MAILBIN: %m");
          exit($EX_UNAVAILABLE);
          }
          
          close(INFO);
          syslog('mail|info',"sent reply to $sender");
          exit($EX_OK);
          
          sub PipeHandler {
          syslog('mail|err',"error: broken pipe to mailer");
          }
          

          Далее, virtual
          У меня ситуация была немного нестандартная. Данный сервер был релеем внутрь сети. Там его встречал другой почтовик. Были адресаты которые приходили на релей, но жили на внутреннем почтовике. Более того, эти адресаты были общими папками, а не конкретными пользователями. Внутренний почтовик на IceWarp. Соответственно, не найдя как там настроить autoreply для общих папок, я занялся придумыванием автореплая на входе на релее.
          Вот что получилось

          file: virtal

          it@company.com   it@company.com, reply@reply.company.com
          

          Приходящее письмо на it@company.com кидается на it@company.com и копия летит на reply@reply.company.com
          reply.company.com - это несуществующий домен, потому сделал в файл transport следующую запись

          file: transport

          reply.company.com        reply:
          

          Итак получил транспорт для несуществующего домена который все что приходит на него, отправляет на фильтр в master.cf с именем reply
          Надеюсь пока не сложно
          И вот что в файле master.cf
          reply unix - n n - - pipe flags= user=mailman argv=/etc/postfix/reply.pl ${sender} autoreply
          

          Коротко скажу так .. скрипту /etc/postfix/reply.pl скармливается отправитель и имя файла, которое будет отправлено оправителю.

          Далее

          postmap virtual
          postmap transport
          postfix reload

          Опубликовано 2011-07-26 19:00:00


          Находится в поиске с названиями
          Ссылки о "Автоответчик на Postfix" на других сайтах