Skocz do zawartości
pietrovek

Problemy z Postfix z podpisywaniem DKIM i szybkością

Polecane posty

Witam!

 

Mam skonfigurowany MTA postfix+antywirus+antyspam+dkim, problem w tym iż wysyłając cokolwiek przy użyciu php, wiadomości nie są podpisywane przez DKIM ani nie są skanowane przez antyspam i antywirus - zastanawiam się gdzie popełniłem błąd w konfiguracji że posftix nadane wiadomości lokalnie nie skanuje i nie podpisuje? wysyłając np. z Tunderbird (z innego IP niż serwera) wszystko jest pospisywane i skanowane.

 

Druga sprawa, iż wysłanie 700 maili (php w pętli - przez stronę www) zajmuje serwerowi ok. 30min - wydaje mi się to za dużo - gdzie mogę szukać wąskich gardeł?

 

Serwer dedykowany na i7, przy wysłaniu 700maili z www pracuje tylko w 10% więc to nie problem "wydajności sprzętu"

 

 

Pozdrawiam.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

main.cf

 

# See /usr/share/postfix/main.cf.dist for a commented, more complete version


# Debian specific:  Specifying a file name will cause the first
# line of that file to be used as the name.  The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

readme_directory = /usr/share/doc/postfix

# TLS parameters
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

myhostname = s1.domena.pl
mydestination = localhost, localhost.localdomain
mynetworks = 127.0.0.0/8
virtual_alias_domains =
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql-virtual_email2email.cf
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-virtual_domains.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailboxes.cf
virtual_mailbox_base = /home/vmail
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
#smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
transport_maps = proxy:mysql:/etc/postfix/mysql-virtual_transports.cf, hash:/etc/postfix/transport
virtual_create_maildirsize = yes
virtual_maildir_extended = yes
virtual_mailbox_limit_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = "The user you are trying to reach is over quota."
virtual_overquota_bounce = yes
proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $virtual_mailbox_limit_maps
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
receive_override_options = no_address_mappings


mime_header_checks = regexp:/etc/postfix/mime_header_checks.regexp

smtpd_use_tls = yes
smtpd_tls_security_level = may
smtpd_tls_auth_only = no
smtpd_tls_ask_ccert = yes
smtpd_tls_mandatory_protocols = SSLv3, TLSv1
smtpd_tls_loglevel = 4
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
smtpd_tls_cert_file = /etc/postfix/smtpd.cert
smtpd_tls_key_file = /etc/postfix/smtpd.key
#smtpd_tls_CAfile = /postfix/localhost.crt

recipient_delimiter=+


default_rbl_reply = $rbl_code Service unavailable; $rbl_class
#[$rbl_what] blocked using $rbl_domain${rbl_reason?; $rbl_reason}

smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_invalid_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unknown_sender_domain,
  reject_unknown_recipient_domain,
  reject_unauth_destination,
#RBL's
  reject_rbl_client zen.spamhaus.org,
  reject_rbl_client cbl.abuseat.org,
  reject_rbl_client bl.spamcop.net,
  permit


message_size_limit = 209715200

 

master.cf

#
# Postfix master process configuration file.  For details on the format
# of the file, see the master(5) manual page (command: "man 5 master").
#
# Do not forget to execute "postfix reload" after editing this file.
#
# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#			   (yes)   (yes)   (yes)   (never) (100)
# ==========================================================================
smtp	  inet  n	   -	   -	   -	   -	   smtpd
    -o content_filter=scan:127.0.0.1:10025
    -o milter_default_action=accept
    -o milter_protocol=2
    -o smtpd_milters=inet:localhost:8891
    -o non_smtpd_milters=inet:localhost:8891

submission inet n	  -	   -	   -	   -	   smtpd
    -o content_filter=scan:127.0.0.1:10025
    -o milter_default_action=accept
    -o milter_protocol=2
    -o smtpd_milters=inet:localhost:8891
    -o non_smtpd_milters=inet:localhost:8891

smtps	 inet  n	   -	   -	   -	   -	   smtpd
    -o smtpd_tls_wrappermode=yes
    -o content_filter=scan:127.0.0.1:10025
    -o milter_default_action=accept
    -o milter_protocol=2
    -o smtpd_milters=inet:localhost:8891
    -o non_smtpd_milters=inet:localhost:8891

#submission inet n	   -	   -	   -	   -	   smtpd
#  -o smtpd_tls_security_level=encrypt
#  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING
#smtps	 inet  n	   -	   -	   -	   -	   smtpd
#  -o smtpd_tls_wrappermode=yes
#  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING
#628	   inet  n	   -	   -	   -	   -	   qmqpd
pickup    fifo  n	   -	   -	   60	  1	   pickup
cleanup   unix  n	   -	   -	   -	   0	   cleanup
qmgr	  fifo  n	   -	   n	   300	 1	   qmgr
#qmgr	 fifo  n	   -	   -	   300	 1	   oqmgr
tlsmgr    unix  -	   -	   -	   1000?   1	   tlsmgr
rewrite   unix  -	   -	   -	   -	   -	   trivial-rewrite
bounce    unix  -	   -	   -	   -	   0	   bounce
defer	 unix  -	   -	   -	   -	   0	   bounce
trace	 unix  -	   -	   -	   -	   0	   bounce
verify    unix  -	   -	   -	   -	   1	   verify
flush	 unix  n	   -	   -	   1000?   0	   flush
proxymap  unix  -	   -	   n	   -	   -	   proxymap
proxywrite unix -	   -	   n	   -	   1	   proxymap
smtp	  unix  -	   -	   -	   -	   -	   smtp
# When relaying mail as backup MX, disable fallback_relay to avoid MX loops
relay	 unix  -	   -	   -	   -	   -	   smtp
    -o smtp_fallback_relay=
#	   -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq	 unix  n	   -	   -	   -	   -	   showq
error	 unix  -	   -	   -	   -	   -	   error
retry	 unix  -	   -	   -	   -	   -	   error
discard   unix  -	   -	   -	   -	   -	   discard
local	 unix  -	   n	   n	   -	   -	   local
virtual   unix  -	   n	   n	   -	   -	   virtual
lmtp	  unix  -	   -	   -	   -	   -	   lmtp
anvil	 unix  -	   -	   -	   -	   1	   anvil
scache    unix  -	   -	   -	   -	   1	   scache
#
# ====================================================================
# Interfaces to non-Postfix software. Be sure to examine the manual
# pages of the non-Postfix software to find out what options it wants.
#
# Many of the following services use the Postfix pipe(8) delivery
# agent.  See the pipe(8) man page for information about ${recipient}
# and other message envelope options.
# ====================================================================
#
# maildrop. See the Postfix MAILDROP_README file for details.
# Also specify in main.cf: maildrop_destination_recipient_limit=1
#
maildrop  unix  -	   n	   n	   -	   -	   pipe
 flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
#
# ====================================================================
#
# Recent Cyrus versions can use the existing "lmtp" master.cf entry.
#
# Specify in cyrus.conf:
#   lmtp    cmd="lmtpd -a" listen="localhost:lmtp" proto=tcp4
#
# Specify in main.cf one or more of the following:
#  mailbox_transport = lmtp:inet:localhost
#  virtual_transport = lmtp:inet:localhost
#
# ====================================================================
#
# Cyrus 2.1.5 (Amos Gouaux)
# Also specify in main.cf: cyrus_destination_recipient_limit=1
#
#cyrus	 unix  -	   n	   n	   -	   -	   pipe
#  user=cyrus argv=/cyrus/bin/deliver -e -r ${sender} -m ${extension} ${user}
#
# ====================================================================
# Old example of delivery via Cyrus.
#
#old-cyrus unix  -	   n	   n	   -	   -	   pipe
#  flags=R user=cyrus argv=/cyrus/bin/deliver -e -m ${extension} ${user}
#
# ====================================================================
#
# See the Postfix UUCP_README file for configuration details.
#
uucp	  unix  -	   n	   n	   -	   -	   pipe
 flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
#
# Other external delivery methods.
#
ifmail    unix  -	   n	   n	   -	   -	   pipe
 flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp	 unix  -	   n	   n	   -	   -	   pipe
 flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient
scalemail-backend unix  -	   n	   n	   -	   2	   pipe
 flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}
mailman   unix  -	   n	   n	   -	   -	   pipe
 flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
 ${nexthop} ${user}


dovecot   unix  -	   n	   n	   -	   -	   pipe
   flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient}


spamd unix - n   n   -   -   pipe
   user=vmail argv=/usr/bin/spamc -f -e
   /usr/sbin/sendmail -oi -f ${sender} ${recipient}

# AV scan filter (used by content_filter)
scan	  unix  -	   -	   n	   -	   32	  smtp
    -o smtp_send_xforward_command=yes


# For injecting mail back into postfix from the filter
127.0.0.1:10026 inet  n -	   n	   -	   32	  smtpd
    -o content_filter=spamd
    -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
    -o smtpd_helo_restrictions=
    -o smtpd_client_restrictions=
    -o smtpd_sender_restrictions=
    -o smtpd_recipient_restrictions=permit_mynetworks,reject
    -o mynetworks_style=host
    -o smtpd_authorized_xforward_hosts=127.0.0.0/8

vacation    unix  -	   n	   n	   -	   -	   pipe
 flags=Rq user=vacation argv=/var/mail/vacation/vacation.pl -f ${sender} -- ${recipient}

Edytowano przez pietrovek (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość tom3kk

Piszesz ze wysylasz wiadomosci poprzez skrypt PHP, jakiej metody wysylania uzywa ten skrypt?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

w kwestii podpisywania dałem sobie radę - właśnie poprzez zmianę sposobu wysyłania - nie metoda mail() tylko przez klasę PHPMailer i autoryzację SMTP.

 

jednak problem wydajności nadal istnieje - 700maili w 30min - to niezbyt dobry wynik...

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość tom3kk

w kwestii podpisywania dałem sobie radę - właśnie poprzez zmianę sposobu wysyłania - nie metoda mail() tylko przez klasę PHPMailer i autoryzację SMTP.

No wlasnie, do tego zmierzalem.

 

Zapewne w petli je wysylasz, zaobserwuj sobie kolejke postfixa i zobacz jak szybko maile z niej schodza.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Ja na swoim vpsie zainstalowałem sobie virtualmina który mi wszystko skonfigurował sam, antywirusa nie używam bo przychodzące maile mi lecą na google apps natomiast wysyłałem maile przez php mailera funkcją mail i wszystko ładnie podpisane przed dkim i wydajność ~150maili na minutę.

 

Realizowałem tak klientowi mailing do 400k adresów. wszystko zeszło jedynie onet robił jaja bo maja limity i wisiało w kolejce.

 

Najlepsze że wbrew ogólnym opiniom nie trafiłem na RBL itp. przez ilość maili w krótkim czasie.

 

Konfig oczywiście z spf i dkim, skrypt phpmailera sobie przerobiłem troszkę pod siebie i dodałem skrypt ze statystykami do wysyłek tzn. obliczenia prędkości wysyłki, czas zakończenia mailingu itp.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość patrys

Nie wiem czemu połączenie do dkima jets podane jako opcja w master.cf

Daj to w main.cf:

milter_default_action = accept
milter_protocol = 2
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891

Jak już będziesz czyścił, wyrzuć też parametr połączenia do amavisa i sprawdź tą szybkość.

Bo to ten deamon będzie tu wąskim gardłem.

 

Tak w ogóle to powinno podpisywać wszystkie wychodzące maile, korzystasz z dkim-filter ?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

korzystasz z dkim-filter

 

dokładnie...

 

Nie wiem czemu połączenie do dkima jets podane jako opcja w master.cf

 

zasadniczo dlatego iż jak dałem to w main.cf to maile były podpisywane 3 razy... (3 naglowki DKIM w jednej wiadomości) co wydało mi się odrobinkę nieprawidłowe :)

 

poobserwuję kolejkę przy wysyłaniu i zobaczę - może coś wywnioskuję...i dam znać

 

jak mam wyłączyć amavisa to w jaki sposób skanować antywirusowo maile?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość patrys

Konfiguracja dkim-filter jest dość prosta, jednak ją sprawdź.

Używam tego na wielu serwerach/domenach i na pewno działa to poprawnie.

Definicja połączenia w main.cf, jest też poprawna na pewno podpisze raz maila.

Zastanów się czy jest potrzebne to skanowanie antywirusowe, używasz kilku odrzuceń sprawdzających smtp, dodatkowo masz sprawdzenie list rbl ( w sumie spamcop i spamhaus Ci starczy ).

Wydajność po odłączeniu filtrowania na pewno się zwiększy ;)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

konfiguracja dkim-filter jest w sumie standardowa...myślę że 3 krotne podpisywanie związane jest z "hop'ami" jaką przechodzi wiadomość

 

1. nadawca->serwer(postfix)

2. serwer(posftix)->amavis

3. amavis->serwer(posftix)

 

gdy wiadomość "przychodzi do MTA" jest podpisywana - stąd 3 nagłówki...

 

przemyślę sprawę antywirusa - w sumie jakiś czas już ten serwer działa a narazie antywirus nie przydał się ani razu...

Edytowano przez pietrovek (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Witam

 

Co do podłączenia antywirusa do postfixa to polecałbym clamsmtp- wydajny i prosty, a zarazem spełnia swoje zadanie. Jeśli korzystasz z amavisa, niepotrzebny Ci dkim-milter.

 

Pozdrawiam

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się


×