[Résolu] Tuning Postfix + Spamassassin

Tuning Postfix + Spamassassin [Résolu] - Installation - Linux et OS Alternatifs

Marsh Posté le 17-02-2016 à 18:26:12    

Bonjour,
 
Nous avons 2 serveurs SMTP derrière un F5 qui gère la répartition de charge sur les 2 serveurs.
 
Tout est installé/paramétré et fonctionne correctement (Postfix + Spamassassin).
Avant la mise en production je voudrais optimiser le tout car lors de mes tests de charge j'ai pu constater un gros ralentissement pour délivrer les mails.
 
Nos serveurs doivent pouvoir livrer entre 800 000 et 1000 000 de mails sur 24h.
Chaque serveur dispose de 4vCPU et 8Go RAM.
 
La partie "a" du delai (delay=a/b/c/d) augmente beaucoup lors de gros envoi. Quels sont les paramètres qui influence ce temps ?
Quels conseils pouvez-vous me donner pour optimiser Postfix + Spamassassin ?
 
 
Voici le contenu de quelques fichiers de configurations :
 
Extrait de main.cf

Code :
  1. #######################
  2. #### CONFIGURATION ####
  3. #######################
  4. smtpd_helo_required = yes
  5. smtpd_recipient_restrictions =
  6.         reject_non_fqdn_recipient,
  7.         reject_unknown_sender_domain,
  8.         reject_non_fqdn_sender,
  9.         reject_unknown_recipient_domain,
  10.         permit_mynetworks,
  11.         permit_sasl_authenticated,
  12.         reject_non_fqdn_helo_hostname,
  13.         reject_unauth_destination,
  14.         check_sender_access regexp:/configuration/postfix/sender_access,
  15.         check_recipient_access regexp:/configuration/postfix/recipient_access,
  16.         reject_rbl_client zen.spamhaus.org,
  17.         reject_rbl_client dnsbl.njabl.net,
  18.         reject_rbl_client dnsbl.sorbs.net,
  19.         permit
  20. smtpd_data_restrictions =
  21.         reject_unauth_pipelining,
  22.         permit
  23. ##########################################################################
  24. ### Ralentir l'envoi vers certains domaines (voir fichier "transport" ) ###
  25. ##########################################################################
  26. slow_destination_recipient_limit = 20
  27. slow_destination_concurrency_limit = 2
  28. ######################################################
  29. ## Definition des parametres de chiffrement via TLS ##
  30. ######################################################
  31. # Smtp ( OUTGOING )
  32. smtp_tls_loglevel            = 1
  33. smtp_tls_security_level      = may
  34. smtp_tls_CAfile              = /configuration/ssl/DigiCertCA.crt
  35. smtp_tls_protocols           = !SSLv2, !SSLv3, TLSv1
  36. smtp_tls_mandatory_protocols = !SSLv2, !SSLv3, TLSv1
  37. smtp_tls_mandatory_ciphers   = high
  38. smtp_tls_exclude_ciphers     = aNULL, eNULL, EXPORT, DES, RC4, MD5, PSK, aECDH, EDH-DSS-DES-CBC3-SHA, EDH-RSA-DES-CDC3-SHA, KRB5-DE5, CBC3-SHA
  39. # ---------------------------------------------------------------------------------------------------
  40. # Smtpd ( INCOMING )
  41. smtpd_tls_loglevel            = 1
  42. smtpd_use_tls                 = yes
  43. smtpd_tls_security_level      = may
  44. smtpd_tls_received_header     = yes
  45. smtpd_tls_protocols           = !SSLv2, !SSLv3, TLSv1
  46. smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, TLSv1
  47. smtpd_tls_mandatory_ciphers   = high
  48. smtpd_tls_exclude_ciphers     = aNULL, eNULL, EXPORT, DES, RC4, MD5, PSK, aECDH, EDH-DSS-DES-CBC3-SHA, EDH-RSA-DES-CDC3-SHA, KRB5-DE5, CBC3-SHA
  49. smtpd_tls_CAfile              = /configuration/ssl/DigiCertCA.crt
  50. smtpd_tls_cert_file           = /configuration/ssl/smtp.mondomaine.crt
  51. smtpd_tls_key_file            = /configuration/ssl/smtp.mondomaine.nopass.key
  52. smtpd_tls_eecdh_grade         = ultra
  53. tls_eecdh_strong_curve = prime256v1
  54. tls_eecdh_ultra_curve  = secp521r1
  55. tls_preempt_cipherlist = yes
  56. tls_random_source      = dev:/dev/urandom
  57. smtp_tls_session_cache_database  = btree:${data_directory}/smtp_scache
  58. smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
  59. lmtp_tls_session_cache_database  = btree:${data_directory}/lmtp_scache
  60. smtpd_tls_session_cache_timeout = 3600s
  61. ##################################
  62. ## Parametres de connexion SASL ##
  63. ##################################
  64. smtpd_sasl_auth_enable          = yes
  65. smtpd_sasl_path                 = smtpd
  66. smtpd_sasl_security_options     = noanonymous
  67. smtpd_sasl_tls_security_options = $smtpd_sasl_security_options
  68. smtpd_sasl_local_domain         = $mydomain
  69. smtpd_sasl_authenticated_header = no
  70. broken_sasl_auth_clients = yes
  71. ####################
  72. ## Transport maps ##
  73. ####################
  74. transport_maps = hash:/configuration/postfix/transport
  75. #######################################################
  76. ### Regles de filtrage du contenu de chaque message ###
  77. #######################################################
  78. body_checks = regexp:/configuration/postfix/body_checks
  79. ##############################################################################
  80. ## Test du parametre process a cause des mails qui restent en boite d'envoi ##
  81. ##############################################################################
  82. default_process_limit = 300
  83. #######################################
  84. ## Taille limite des messages = 30Mo ##
  85. #######################################
  86. message_size_limit = 30000000
  87. ##############
  88. ## OpenDKIM ##
  89. ##############
  90. milter_protocol = 6
  91. milter_default_action = accept
  92. smtpd_milters = unix:/var/spool/postfix/opendkim/opendkim.sock
  93. non_smtpd_milters = unix:/var/spool/postfix/opendkim/opendkim.sock


 
 
Contenu de master.cf :

Code :
  1. #
  2. # Postfix master process configuration file.  For details on the format
  3. # of the file, see the master(5) manual page (command: "man 5 master" ).
  4. #
  5. # Do not forget to execute "postfix reload" after editing this file.
  6. #
  7. # ==========================================================================
  8. # service type  private unpriv  chroot  wakeup  maxproc command + args
  9. #               (yes)   (yes)   (yes)   (never) (100)
  10. # ==========================================================================
  11. smtp      inet  n       -       n       -       -       smtpd -o content_filter=spamassassin
  12. submission inet n       -       n       -       -       smtpd -o content_filter=spamassassin
  13.   -o smtpd_milters = unix:/opendkim/opendkim.sock
  14.   -o smtpd_tls_security_level=encrypt
  15.   -o smtpd_sasl_auth_enable=yes
  16.   -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  17. #  -o milter_macro_daemon_name=ORIGINATING
  18. smtps     inet  n       -       n       -       -       smtpd -o content_filter=spamassassin
  19.   -o smtpd_tls_wrappermode=yes
  20.   -o smtpd_milters = unix:/opendkim/opendkim.sock
  21. #  -o smtpd_sasl_auth_enable=yes
  22. #  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  23. #  -o milter_macro_daemon_name=ORIGINATING
  24. #628      inet  n       -       n       -       -       qmqpd
  25. pickup    fifo  n       -       n       60      1       pickup
  26. cleanup   unix  n       -       n       -       0       cleanup
  27. qmgr      fifo  n       -       n       300     1       qmgr
  28. #qmgr     fifo  n       -       n       300     1       oqmgr
  29. tlsmgr    unix  -       -       n       1000?   1       tlsmgr
  30. rewrite   unix  -       -       n       -       -       trivial-rewrite
  31. bounce    unix  -       -       n       -       0       bounce
  32. defer     unix  -       -       n       -       0       bounce
  33. trace     unix  -       -       n       -       0       bounce
  34. verify    unix  -       -       n       -       1       verify
  35. flush     unix  n       -       n       1000?   0       flush
  36. proxymap  unix  -       -       n       -       -       proxymap
  37. proxywrite unix -       -       n       -       1       proxymap
  38. smtp      unix  -       -       n       -       -       smtp
  39. # ==========================================================================
  40. smtp_fail      unix  -       -       n       -       -       smtp
  41. # ==========================================================================
  42. # When relaying mail as backup MX, disable fallback_relay to avoid MX loops
  43. relay     unix  -       -       n       -       -       smtp
  44.         -o smtp_fallback_relay=
  45. #       -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
  46. showq     unix  n       -       n       -       -       showq
  47. error     unix  -       -       n       -       -       error
  48. retry     unix  -       -       n       -       -       error
  49. discard   unix  -       -       n       -       -       discard
  50. local     unix  -       n       n       -       -       local
  51. virtual   unix  -       n       n       -       -       virtual
  52. lmtp      unix  -       -       n       -       -       lmtp
  53. anvil     unix  -       -       n       -       1       anvil
  54. scache    unix  -       -       n       -       1       scache
  55. #
  56. # ====================================================================
  57. slow      unix  -       -       n       -       5       smtp
  58.   -o syslog_name=postfix-slow
  59.   -o smtp_destination_concurrency_limit=3
  60.   -o slow_destination_rate_delay=1
  61. #
  62. # ====================================================================
  63. # Interfaces to non-Postfix software. Be sure to examine the manual
  64. # pages of the non-Postfix software to find out what options it wants.
  65. #
  66. # Many of the following services use the Postfix pipe(8) delivery
  67. # agent.  See the pipe(8) man page for information about ${recipient}
  68. # and other message envelope options.
  69. # ====================================================================
  70. #
  71. # maildrop. See the Postfix MAILDROP_README file for details.
  72. # Also specify in main.cf: maildrop_destination_recipient_limit=1
  73. #
  74. maildrop  unix  -       n       n       -       -       pipe
  75.   flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient}
  76. #
  77. # ====================================================================
  78. #
  79. # The Cyrus deliver program has changed incompatibly, multiple times.
  80. #
  81. old-cyrus unix  -       n       n       -       -       pipe
  82.   flags=R user=cyrus argv=/usr/lib/cyrus-imapd/deliver -e -m ${extension} ${user}
  83. #
  84. # ====================================================================
  85. #
  86. # Cyrus 2.1.5 (Amos Gouaux)
  87. # Also specify in main.cf: cyrus_destination_recipient_limit=1
  88. #
  89. cyrus     unix  -       n       n       -       -       pipe
  90.   user=cyrus argv=/usr/lib/cyrus-imapd/deliver -e -r ${sender} -m ${extension} ${user}
  91. #
  92. # ====================================================================
  93. #
  94. # See the Postfix UUCP_README file for configuration details.
  95. #
  96. uucp      unix  -       n       n       -       -       pipe
  97.   flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
  98. #
  99. # ====================================================================
  100. #
  101. # Other external delivery methods.
  102. #
  103. ifmail    unix  -       n       n       -       -       pipe
  104.   flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
  105. #
  106. bsmtp     unix  -       n       n       -       -       pipe
  107.   flags=Fq. user=bsmtp argv=/usr/local/sbin/bsmtp -f $sender $nexthop $recipient
  108. #
  109. scalemail-backend unix -       n       n       -       2       pipe
  110.   flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store
  111.   ${nexthop} ${user} ${extension}
  112. #
  113. mailman   unix  -       n       n       -       -       pipe
  114.   flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
  115.   ${nexthop} ${user}
  116. # ====================================================================
  117. #
  118. spamassassin unix - n n - - pipe flags=R user=spamd argv=/usr/bin/spamc -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}


 
 
Contenu de /etc/sysconfig/spamassassin :

Code :
  1. # Options to spamd
  2. SPID_DIR="/var/run/spamassassin"
  3. SPAMDOPTIONS="-d -c --max-children=70 --min-children=50 -u spamd -H /logs/spamassassin -s /logs/spamassassin/spamd.log"


 
 
Merci d'avance pour votre aide ! :)


Message édité par K-ny13 le 09-03-2016 à 11:26:00
Reply

Marsh Posté le 17-02-2016 à 18:26:12   

Reply

Marsh Posté le 25-02-2016 à 12:37:34    

Salut ! J'ai quelques questions sur ta config ! Y'a quelques trucs que je ne comprends pas trop.

 

Pourquoi tu configures smtpd_milters dans main.cf pour l'override ensuite dans ton master.cf ? Pourquoi ne pas mettre directement :

 

smtpd_milters = unix:/opendkim/opendkim.sock
non_smtpd_milters = unix:/opendkim/opendkim.sock

dans ton main.cf et enlever les lignes inutile de ton master.cf ?

 

La même pour smtpd_sasl_auth_enable, tu déclares smtpd_sasl_auth_enable=yes dans ton main.cf et tu le remet dans ton master.cf.

 

Et pourquoi tu forces les connections en TLSv1 ? Pourquoi ne pas laisser le choix entre du TLSv1 / TLSv1.1 / TLSv1.2  et donc utiliser du 1.2 quand c'est possible ?

 

D'ailleurs, avec ta config TLS (smtp(d)_tls_CAfile=/configuration/ssl/DigiCertCA.crt), tu chopes pas uniquement des "Untrusted TLS connection established from" & "Untrusted TLS connection established to" ?

 

:hello:


Message édité par FxT² le 25-02-2016 à 12:47:15

---------------
// FxT.fr
Reply

Marsh Posté le 29-02-2016 à 01:16:55    

Salut FxT² !
 
Merci bcp pour ta réponse.
En fait pour tout ça j'ai suivi plusieurs tuto que j'avais trouvé sur internet..
 
Je vais enlever les lignes que tu me dis dans le master.cf concernant opendkim et sasl_auth.
 
Pour les connections TLS il faut donc que je mette :

Code :
  1. !SSLv2, !SSLv3, TLSv1, TLSv1.1, TLSv1.2


C'est bien ça ?
 

D'ailleurs, avec ta config TLS (smtp(d)_tls_CAfile=/configuration/ssl/DigiCertCA.crt), tu chopes pas uniquement des "Untrusted TLS connection established from" & "Untrusted TLS connection established to" ?


Oui c'est exactement ce que j'ai...
 
Merci pour ton aide :)

Message cité 1 fois
Message édité par K-ny13 le 29-02-2016 à 01:19:00
Reply

Marsh Posté le 29-02-2016 à 09:43:08    

oui pour le TLS c'est bien ca

Reply

Marsh Posté le 29-02-2016 à 16:32:50    

D'accord merci gizmo15

Reply

Marsh Posté le 29-02-2016 à 16:33:39    

Après quelques recherches il semblerait que mettre dans main.cf :

Code :
  1. milter_protocol = 6
  2. milter_default_action = accept
  3. smtpd_milters = unix:/var/spool/postfix/opendkim/opendkim.sock
  4. non_smtpd_milters = unix:/var/spool/postfix/opendkim/opendkim.sock


 
Ne permet d'avoir que la vérification des éventuelles signatures des messages reçus.
Et que si on veut que les messages sortant soient bien signés il faut ajouter aussi à master.cf  

Code :
  1. submission inet n       -       -       -       -       smtpd
  2.     -o smtpd_milters=unix:/var/spool/postfix/opendkim/opendkim.sock
  3. smtps     inet  n       -       -       -       -       smtpd
  4.     -o smtpd_milters=unix:/var/spool/postfix/opendkim/opendkim.sock


 
 
En ce qui concerne la partie suivante :

D'ailleurs, avec ta config TLS (smtp(d)_tls_CAfile=/configuration/ssl/DigiCertCA.crt), tu chopes pas uniquement des "Untrusted TLS connection established from" & "Untrusted TLS connection established to" ?


Savez-vous quelle est la bonne configuration à faire ?

Message cité 1 fois
Message édité par K-ny13 le 29-02-2016 à 16:40:35
Reply

Marsh Posté le 01-03-2016 à 11:39:27    

Salut,  
 
Je n'ai pas l'air d'avoir de problème avec les messages sortants avec uniquement :
 
Dans main.cf :

# OpenDKIM
milter_default_action           = accept
milter_protocol                 = 6
smtpd_milters                   = unix:/opendkim/opendkim.sock
non_smtpd_milters               = unix:/opendkim/opendkim.sock


http://www.mail-tester.com/web-kDsxeA
 
 [:supernannie:3]  
 
---------
-o sert à override la configuration globale pour un service spécifique. Par exemple, si tu veux de l'opportunistic TLS (may) en IN sur tous les services sauf submission.
 
Dans main.cf :

smtpd_tls_security_level = may

Mais dans master.cf, tu vas override cette ligne de conf uniquement pour submission :

submission inet n       -       -       -       -       smtpd
-o smtpd_tls_security_level = encrypt


---------

K-ny13 a écrit :


Code :
  1. !SSLv2, !SSLv3, TLSv1, TLSv1.1, TLSv1.2


C'est bien ça ?


Oui et non :

smtp_tls_mandatory_protocols = !SSLv2, !SSLv3
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3

Pas besoin de plus.


---------------
// FxT.fr
Reply

Marsh Posté le 01-03-2016 à 12:50:11    

K-ny13 a écrit :

En ce qui concerne la partie suivante :

D'ailleurs, avec ta config TLS (smtp(d)_tls_CAfile=/configuration/ssl/DigiCertCA.crt), tu chopes pas uniquement des "Untrusted TLS connection established from" & "Untrusted TLS connection established to" ?


Savez-vous quelle est la bonne configuration à faire ?

Si tu es sur debian :

$ apt install ca-certificates


Dans ton main.cf :

smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt


Pour du rpm : http://rpm.pbone.net/index.php3?st [...] &srodzaj=3
 
------------------
La conf que j'utilise en ce moment (si vous voyez des incohérences/erreurs ou des choses que je pourrais optimiser, n’hésitez pas à me le dire !) :

# SMTP Out  
smtp_tls_security_level         = may
smtp_tls_loglevel               = 1
smtp_tls_mandatory_protocols    = !SSLv2, !SSLv3
smtp_tls_mandatory_ciphers      = high
smtp_tls_CAfile                 = /etc/ssl/certs/ca-certificates.crt
 
# SMTP In
smtpd_tls_security_level        = may
smtpd_tls_loglevel              = 1
smtpd_tls_mandatory_protocols   = !SSLv2, !SSLv3
smtpd_tls_mandatory_ciphers     = high
smtpd_tls_cert_file             = /etc/ssl/mail.domain.tld/mail.domain.tld.pem
smtpd_tls_key_file              = $smtpd_tls_cert_file
smtpd_tls_auth_only             = yes
smtpd_use_tls                   = yes
smtpd_tls_ask_ccert             = yes
smtpd_tls_CAfile                = /etc/ssl/certs/ca-certificates.crt
 
# TLS Cache
smtp_tls_session_cache_database = btree:/var/lib/postfix/smtp_scache
smtpd_tls_session_cache_database= btree:/var/lib/postfix/smtpd_scache
smtpd_tls_session_cache_timeout = 3600s
 
# TLS Cipher List
tls_high_cipherlist             = EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!ECDSA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA


Pour la cipherlist, j'utilise les recommandations de bettercrypto.org.
 
 
 


---------------
// FxT.fr
Reply

Marsh Posté le 01-03-2016 à 18:20:26    

Ok merci c'est corrigé.
 
A première vu ta configuration me semble très bien.
 
Je suis sous RedHat 6 et ca-certificates est déjà installé.
Mais en fait je ne vois pas vraiment quel est le problème avec le certificat ?

Reply

Marsh Posté le 01-03-2016 à 20:48:01    

Avec la configuration suivante :

smtp_tls_CAfile = /configuration/ssl/DigiCertCA.crt

Tu vérifies le certificat des MTA auxquels tu te connectes uniquement avec le certificat intermédiaire de ton autorité de certification (DigiCert).  
 
Donc forcément, tu te retrouves avec quasiment que des "Untrusted TLS connection established to".
 
alors qu'avec :

smtp_tls_CAfile = /etc/pki/tls/certs/ca-bundle.crt
(Je crois que c'est ça sous RHEL)


Tu vérifies la signature a l'aide des CA certificate présent dans le Mozilla CA Certificate Store.
 

postfix/smtp[25804]: Trusted TLS connection established to gmail-smtp-in.l.google.com[64.233.167.27]:25: TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)
postfix/smtp[31417]: Trusted TLS connection established to smtp-in.orange.fr[80.12.242.9]:25: TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)


Je te cache pas que c'est vraiment du pinaillage (pour un serveur mail), mais perso, ça me stresse de voir du Untrusted.  :o  [:adrien monk:2]  
 
Après, est-ce c'est qu'il est vraiment utile (dans ton environnement) de vérifier la signature des certificats (en IN/OUT) ? Dans quelle mesure ça impacte les performances ? C'est des questions auxquelles je pourrais pas répondre, c'est d'ailleurs pour ça que je poste un peu sur ton topic, j'aimerais bien l'avis d'HFR.  :o  
 
Autrement, t'as trouvé des infos sur ce qui pourrait influencer le delay a (time before queue manager, including message transmission) ?  
 
  :hello:  
 
 
 
 
 
 
 
 


---------------
// FxT.fr
Reply

Marsh Posté le 01-03-2016 à 20:48:01   

Reply

Marsh Posté le 02-03-2016 à 15:47:44    

D'accord je comprend mieux, merci.

 

Mon problème initial concernant le delay a est résolu.
En fait, lors de mes tests de charge j'y suis aller un peu fort.. 100 000 mails/5min (soit 333 mails/s). Toutefois sans Spamassassin la charge était tenu.

 

Plusieurs choses peuvent influencer le delay a :
- Réseau saturé.
- Capacité d'entrée/sortie du disque.
- Charge CPU
- Mémoire RAM insuffisante.
- Limite du nombre de processus client SMTP simultané/concurrent.

 

Dans mon cas ce n'était pas un problème réseau, ni de vitesse des disques, ni d'un manque de mémoire.

 

J'ai alors augmenté le nombre de CPU (de 2vCPU à 4vCPU) et cela m'a permis de diviser par deux le temps moyen d'envoi des mails. Mais, bien que divisé par 2, le delay a était toujours trop élevé.
Le CPU n'était donc pas réellement la source du problème.

 

J'ai continué mes recherches et je suis tombé sur : http://postfix.traduc.org/index.ph [...] ming_queue
qui explique que la seule manière de réduire la congestion est soit de réduire le taux d'entrée soit d'augmenter le taux de sortie. Cette dernière proposition se traduit soit par une augmentation de la concurrence soit par la réduction de la latence de livraison.

 

Tous les nouveaux messages entrant dans Postfix sont écrits par le service cleanup dans la file d'attente "entrante".
Le paramètre in_flow_delay est utilisé pour limiter le taux d'arrivée lorsque le gestionnaire des files d'attente commence à faiblir. Le service cleanup attendra $in_flow_delay secondes avant de créer un nouveau fichier en file d'attente s'il ne peut obtenir de "jeton" du gestionnaire des files d'attente.

 

Depuis que le nombre de processus cleanup est limité dans la plupart des cas par la concurrence des serveurs SMTP, le taux d'entrée peut excéder le taux de sortie de plus de "nb de connexions SMTP" / $in_flow_delay messages par secondes.
Avec une limite de processus à 100 et un in_flow_delay de 1 seconde, le couple est assez fort pour limiter un injecteur simple à 1 message par seconde, mais pas assez pour infléchir un taux d'entrée excessif provenant de plusieurs sources au même moment.
La limite par défaut des processus "smtp" fixée à 100 est assez élevée pour beaucoup de sites et peut être abaissée pour les sites disposant d'une faible bande passante (à n'utiliser que si le réseau est saturé). Lorsqu'on trouve que la file d'attente croît sur un système "peu actif" (CPU, I/O disque et réseau non saturés) la raison résultante de la congestion est une insuffisante concurrence face à la charge. Si le nombre de connexions sortantes SMTP (en état ESTABLISHED ou SYN_SENT) atteint la limite des processus, que le courrier est traité lentement et que le système et le réseau ne sont pas chargés, il faut augmenter la limite des processus "smtp" et/ou "relay" !

 

Dans ma configuration, "smtp" reçoit le mail, l'envoi à Spamassassin pour analyse qui le renvoi à "smtp" pour qu'il délivre le message. Le goulot d’étranglement était au niveau de Spamassassin avec un nombre de processus actif simultanément bien inférieur au processus "smtp" ce qui provoqué la congestion des mails et donc l'augmentation du delay a.

 

Dans mon cas augmenter le CPU, augmenter le nombre de processus à 200 et augmenter le nombre de processus spamd (pour spamassassin) semble avoir résolu mon problème.
Je pense repasser à 2vCPU. Avec le bon réglage du nombre de processus je pense que c'est suffisant.

 

Contenu de mon fichier /etc/sysconfig/spamassassin :

Code :
  1. # Options to spamd
  2. SPID_DIR="/var/run/spamassassin"
  3. SPAMDOPTIONS="-d -c --max-children=70 --min-children=50 -u spamd -H /logs/spamassassin -s /logs/spamassassin/spamd.log"
 

Lien utile : http://postfix.traduc.org/index.ph [...] .html#rope


Message édité par K-ny13 le 03-03-2016 à 00:24:18
Reply

Marsh Posté le 02-03-2016 à 23:37:12    

Merci pour ta réponse, je garde ça sous la main.  :jap:


---------------
// FxT.fr
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed