[Résolu] Test de charge d'un serveur SMTP

Test de charge d'un serveur SMTP [Résolu] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 29-12-2015 à 16:08:38    

Bonjour, (J'espère être dans la bonne catégorie ^^)
 
Nous avons 6 serveurs SMTP derrière un F5 qui gère la répartition de charge sur les 6 serveurs.
Avant le passage en production de cette nouvelle infra SMTP, je souhaiterais tester la charge de chaque serveur SMTP.
 
Connaissez-vous un logiciel ou un script permettant de tester la charge d'un serveur SMTP ?
 
La nouvelle infra n'est pas accessible de l'extérieur je dois donc "l'attaquer" directement.
J'avais pensez faire un script PHP mais je ne suis pas sûr qu'on puisse paramétrer un serveur SMTP directement dans le script sans modifier php.ini
 
Merci d'avance pour votre aide :)


Message édité par K-ny13 le 17-02-2016 à 18:01:58
Reply

Marsh Posté le 29-12-2015 à 16:08:38   

Reply

Marsh Posté le 29-12-2015 à 16:33:22    

un script en python peut le faire ou du perl


Message édité par gizmo15 le 29-12-2015 à 16:33:43
Reply

Marsh Posté le 29-12-2015 à 17:16:09    

Si le but est de pouvoir faire une boucle pour charger le serveur, tu peux le faire assez facilement en ruby avec le gem mail :
 
https://github.com/mikel/mail/
 

Code :
  1. include 'mail'
  2. Mail.defaults do
  3. delivery_method :smtp, { :address              => "localhost",
  4.                                 :port                 => 25,
  5.                                 :domain               => 'localhost.localdomain',
  6.                                 :user_name            => nil,
  7.                                 :password             => nil,
  8.                                 :authentication       => nil,
  9.                                 :enable_starttls_auto => true  }
  10. end
  11. def send
  12. mail = Mail.new do
  13.   from     'me@test.lindsaar.net'
  14.   to       'you@test.lindsaar.net'
  15.   subject  'Here is the image you wanted'
  16.   body     File.read('body.txt')
  17.   add_file :filename => 'somefile.png', :content => File.read('/somefile.png')
  18. end
  19. mail.deliver
  20. end
  21. while true
  22. send
  23. end


 
 
Tu peux t'amuser à mettre quelques thread pour stresser un peu plus (n'en crée pas un par envoie, ça risque de prendre plus de ressources que la boucle simple).


---------------
Tout est dit mais comme personne n'écoute il faut toujours répéter.
Reply

Marsh Posté le 30-12-2015 à 13:29:32    

Merci Gizmo15 pour ta réponse.
 
Et merci Arthurg95 pour le script je vais regarder ça de plus près.

Reply

Marsh Posté le 30-12-2015 à 14:35:49    

Code :
  1. #!/usr/bin/env python
  2. import smtplib
  3. from email.MIMEMultipart import MIMEMultipart
  4. from email.MIMEText import MIMEText
  5. # Mail body
  6. body = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus eleifend lorem at dui hendrerit, a auctor est maximus. Suspendisse aliquet lacinia libero, \
  7. non placerat tellus laoreet at. Donec interdum quam id lorem consectetur, vel faucibus nibh placerat. Suspendisse aliquam dui non lacus aliquet porttitor. Aliquam \
  8. et vehicula enim. Donec augue magna, rutrum at tincidunt vitae, vestibulum et nisi. In hac habitasse platea dictumst. Suspendisse aliquam quis dolor quis sodales. \
  9. Nulla tempus, ligula a fermentum suscipit, diam risus posuere ipsum, in semper quam mauris id neque. Vivamus mattis dignissim risus vel elementum. Pellentesque eu \
  10. auctor nunc. Curabitur eget nunc rutrum, aliquet nibh eget, vulputate mi. Vestibulum pretium volutpat massa, eu viverra elit rutrum ac. Etiam quis justo quis dolor \
  11. vestibulum efficitur et sed est. Suspendisse id commodo enim.\
  12. Sed id feugiat dolor. Nulla volutpat purus at ligula malesuada auctor. Donec vitae placerat lacus, vel maximus lacus. Praesent lacinia aliquet finibus. Suspendisse\
  13. tincidunt elementum mi at condimentum. Praesent augue augue, iaculis sit amet posuere eget, viverra id risus. Proin sapien neque, varius id ultricies vel, laoreet\
  14.   a risus. Donec fringilla gravida ullamcorper. Suspendisse dignissim vestibulum iaculis. Donec at sapien sed ante varius vehicula. Praesent finibus velit eros, qui\
  15.    eleifend purus luctus ut. Nunc in fermentum quam, nec eleifend nibh. Interdum et malesuada fames ac ante ipsum primis in faucibus. Maecenas in lacinia nisi.\
  16. Phasellus dui sapien, scelerisque bibendum nulla dignissim, elementum dictum ante. Etiam ullamcorper pellentesque turpis non varius. Etiam efficitur in risus ac lacinia.\
  17. Quisque lobortis nisi id magna volutpat posuere. Proin ut ante euismod, placerat elit a, elementum mauris. Sed ut porta libero. Etiam eu aliquam urna. Curabitur ut \
  18. mi cursus, feugiat neque ut, elementum leo. Vestibulum pellentesque sem nec ligula convallis, ac varius diam vulputate. Cras cursus nibh id purus congue, at tempus \
  19. risus tincidunt. Praesent sollicitudin libero diam, vel ultricies ex lobortis at.\
  20. Pellentesque porta maximus egestas. Pellentesque et enim eu urna porta auctor nec sed neque. Maecenas eu ante eget est varius tincidunt. Aenean vel vulputate ligula. \
  21. Quisque vitae tempus lorem. Cras eu orci volutpat, pellentesque augue in, lacinia nibh. Donec pellentesque fermentum neque, eget pharetra ipsum cursus eu. Sed vestibulum \
  22. sed ipsum vitae facilisis. Curabitur a sapien risus. Duis accumsan libero vel lacus tincidunt, pretium ornare mauris finibus. Nullam pulvinar est purus, ut porttitor magna \
  23. aliquam eget. Nam condimentum erat ut pharetra dignissim. Cras id turpis consectetur, fringilla nisi a, rhoncus magna. Aliquam erat volutpat. Mauris mauris eros, bibendum et \
  24. imperdiet vitae, sagittis porttitor justo. Nunc tincidunt eros ac dolor tincidunt facilisis.\
  25. Vestibulum auctor ipsum enim, eleifend varius neque maximus et. Phasellus venenatis quam risus. Aenean auctor vitae mi nec lacinia. Nulla venenatis tellus augue, nec \
  26. feugiat lacus tincidunt ut. Praesent eu sapien ut urna tristique lacinia. Maecenas mollis turpis at sem fringilla, vel varius dui ultricies. Donec consequat fermentum \
  27. diam, eget sollicitudin mauris posuere non. Proin ut nunc varius, pellentesque metus tempus, pellentesque felis. Vivamus tincidunt semper ligula, vel iaculis odio ornare\
  28. et. Suspendisse vestibulum vulputate viverra. Aliquam quam nisl, imperdiet vel est vel, lacinia dignissim turpis. Nam euismod urna lacus, sed facilisis quam egestas eu.\
  29.   Vivamus dignissim varius lorem, nec tempor velit. Vestibulum maximus libero sapien, vel finibus tortor rutrum egestas. Maecenas et pellentesque libero, at vestibulum \
  30.   turpis. Duis id euismod quam, commodo fringilla mi.\
  31. Nulla nec diam cursus, pellentesque leo interdum, sollicitudin nibh. Maecenas quis ante lobortis, cursus enim quis, tempor eros. Ut ornare gravida urna, eu semper ipsum.\
  32. Aliquam vel nisi in est aliquet ultrices. Aliquam congue vel orci scelerisque pulvinar. Donec tristique sed ex et sagittis. Aliquam fermentum ipsum vitae lectus vestibulum \
  33. suscipit. Cras at mollis augue. Morbi faucibus lectus sit amet dignissim dapibus. Quisque vel velit eu nunc aliquet pulvinar. Ut non tristique nulla, ut maximus sapien. \
  34. Integer vel nulla nec massa ornare iaculis eget a lacus. Pellentesque lectus ante, dignissim tristique purus id, ornare condimentum tortor.\
  35. Curabitur et finibus erat, vel iaculis purus. Nunc venenatis ipsum quis nisi pulvinar, ut fermentum elit ornare. Integer eget rhoncus est. Morbi est enim, pharetra ac elit \
  36. eget, luctus convallis felis. Aenean pulvinar feugiat egestas. Phasellus ut rhoncus mi. Aliquam at diam nibh. Etiam id dolor ut eros interdum hendrerit eu et orci. Curabitur\
  37. in odio malesuada, convallis nisl sed, accumsan mauris. Sed molestie porta leo et auctor. Proin egestas, enim vel gravida ultricies, nisl nulla dapibus libero, ac molestie\
  38.   est ligula quis felis. Cras ut dui sit amet ligula faucibus dignissim at id justo. Praesent faucibus lorem ut enim congue tincidunt. Curabitur tellus tortor, sodales vel\
  39.    ultrices vel, dictum id purus.\
  40. Fusce imperdiet leo turpis, vel scelerisque risus rutrum vitae. Nullam at nisl ut mi viverra ultricies. Aliquam in metus eu felis luctus accumsan dapibus eu mi. Fusce volutpat\
  41. quis neque at porttitor. Aliquam quis mattis neque. Morbi a efficitur tellus, eget posuere erat. Vivamus justo ex, eleifend a ex eu, semper scelerisque eros. Duis semper \
  42. tellus vitae mi feugiat, in egestas mi varius. Mauris malesuada lacus ac libero tempus ultrices. Aenean molestie, orci nec rutrum pulvinar, ante nunc suscipit ipsum, quis\
  43.   venenatis nisi risus a est. Nam dolor massa, euismod a nibh rutrum, gravida bibendum mauris. Integer consequat lacus ac est ullamcorper gravida. Proin augue nunc, aliquam\
  44.    non metus non, semper iaculis velit.\
  45. Morbi tincidunt malesuada risus egestas sodales. Vestibulum sed blandit nulla. Morbi mattis enim tellus, eget volutpat sapien dapibus et. Mauris condimentum aliquet ex, vel\
  46. eleifend erat consequat id. Morbi at varius justo, vitae cursus sem. Ut vestibulum ante a sapien venenatis facilisis. Vivamus velit augue, volutpat sit amet maximus sed, \
  47. molestie et ante. Mauris sit amet sem tincidunt, tincidunt magna sed, maximus erat. Praesent iaculis ac turpis a volutpat. Donec convallis metus sagittis lacus sollicitudin,\
  48.   sed porta elit hendrerit. Duis vel mauris urna. In hac habitasse platea dictumst. Nam ac ligula lectus. Mauris consectetur, dui non hendrerit hendrerit, lectus eros ultrices\
  49.    nunc, sed egestas magna arcu a velit. Curabitur id orci et lacus feugiat lobortis. Curabitur imperdiet eros quis porttitor molestie.\
  50. Proin et accumsan turpis. Etiam faucibus nibh et arcu maximus, id fermentum urna fringilla. Ut vitae erat maximus libero maximus tincidunt. Morbi ultrices, velit vel mattis \
  51. volutpat, ex felis porttitor orci, nec euismod nibh quam eu velit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec sapien magna, \
  52. pretium in gravida eu, scelerisque non ligula. Mauris iaculis lorem feugiat est consequat vehicula. Etiam vestibulum eros eget hendrerit malesuada. Vivamus vitae efficitur nisl.\
  53. In tempus efficitur suscipit. Mauris viverra odio urna, eu imperdiet tortor faucibus eu. Quisque sit amet neque aliquam, accumsan tortor sit amet, tempus sapien. Nam volutpat\
  54. blandit mauris ut vehicula. Pellentesque porttitor viverra magna eget lacinia. Aliquam tempus congue mi tristique mollis. Mauris in ex quis sem molestie hendrerit a eget massa.\
  55.   Ut eget tristique enim, nec semper ligula. Quisque feugiat hendrerit arcu vestibulum posuere. Nullam vel nunc erat. Sed est urna, venenatis eget dolor a, porta iaculis metus. \
  56.   In in risus non justo dapibus sagittis mollis quis nisi. Sed sit amet velit nunc. Ut ultrices felis et cursus posuere. Pellentesque posuere vitae arcu vitae mollis.\
  57. Praesnt eu massa at quam elementum feugiat. Aenean tempus pretium justo malesuada eleifend. Etiam id imperdiet enim. Fusce tincidunt efficitur ligula, vitae tincidunt libero ve\
  58. nenatis sit amet. Proin et ex commodo velit volutpat egestas quis nec justo. Ut id nibh a massa dictum vehicula. Sed imperdiet nisi nisi, eu venenatis ligula tristique ac. \
  59. Cras justo tellus, eleifend id cursus a, lobortis at orci. Curabitur at ullamcorper velit. Vivamus tristique lectus gravida tellus semper maximus. Maecenas a urna a ante viverra \
  60. pulvinar quis non ligula. Cras non velit nec quam dignissim facilisis. Mauris a tortor eget metus efficitur bibendum. Sed metus mi, laoreet ac lobortis eget, feugiat in purus.\
  61. Cras sapien ipsum, sodales dapibus aliquet vitae, pharetra ut leo. Maecenas varius ipsum eget faucibus vestibulum. Nulla odio lectus, malesuada ac tincidunt eu, tempor nec\
  62. magna. Proin sed facilisis neque. Nullam fringilla nisl eget nunc finibus, eget pulvinar justo euismod. Fusce hendrerit ornare congue. Etiam lectus odio, sagittis ac molestie\
  63.   sit amet, malesuada sed massa. Pellentesque vestibulum, tortor et dignissim commodo, odio nunc accumsan sapien, non interdum lectus magna eget libero. Nullam nec dui egestas,\
  64.    pharetra enim a, molestie nulla. Proin vel sodales risus. Integer varius cursus consequat. Vivamus lobortis quis massa vel finibus.\
  65. Vestibulum ac lacinia libero, at fermentum elit. Donec arcu diam, malesuada non nisl sit amet, malesuada facilisis augue. Sed ultrices tellus ut dolor finibus ornare vitae non\
  66. enim. Sed id eleifend magna. Morbi commodo non nulla in semper. Mauris dictum mauris eros, sit amet tincidunt nulla viverra in. Nulla at felis vulputate, venenatis nulla nec, blandit leo.\
  67. Aenean mollis sem vitae imperdiet blandit. Etiam imperdiet justo non enim varius, at faucibus risus rhoncus. Aliquam consectetur, felis et hendrerit posuere, tellus ligula mollis\
  68. eros, sed tincidunt velit mi in arcu. Nunc vel ex non nisi semper imperdiet in non diam. In viverra dui ut tempus tempor. Nullam sagittis lectus quis dui tincidunt, at faucibus \
  69. diam feugiat. Sed dapibus sem sed sagittis convallis. Sed sit amet orci eu ligula molestie eleifend vel ac mauris."
  70. # Smtp parameters
  71. fromaddr = "email@bla"
  72. toaddr = "email@bla"
  73. server = smtplib.SMTP('smtpserver', portsmtp)
  74. count = 0
  75. # Creation of the mail
  76. msg = MIMEMultipart()
  77. msg['From'] = fromaddr
  78. msg['To'] = toaddr
  79. msg['Subject'] = "Test charge server"
  80. msg.attach(MIMEText(body, 'plain'))
  81. text = msg.as_string()
  82. print ("------------------------" )
  83. print ("Connexion tls" )
  84. server.starttls()
  85. print ("Login mail" )
  86. server.login(fromaddr, "passwordemail" )
  87. print ("------------------------" )
  88. def send_mail():
  89.         server.sendmail(fromaddr, toaddr, text)
  90. while count <= 3600:
  91.         print ("Envoie mail: %s" % count)
  92.         send_mail()
  93.         count += 1
  94. print ("Deco mail" )
  95. server.quit()


 
Ca envoie des mails 3600 fois
 
Moyen de modifier ca pour faire d'autres thread ou de gérer ca avec le temps et pas un compteur.

Reply

Marsh Posté le 03-01-2016 à 07:46:10    

Sinon :  
http://www.postfix.org/smtp-source.1.html
 

DESCRIPTION
       smtp-source  connects to the named host and TCP port (default: port 25)
       and sends one or more messages to it, either sequentially or in  paral-
       lel. The program speaks either SMTP (default) or LMTP.  Connections can
       be made to UNIX-domain and IPv4 or IPv6 servers.  IPv4 and IPv6 are the
       default.


---------------
--
Reply

Marsh Posté le 17-02-2016 à 18:00:10    

Merci à tous, je me suis finalement tourné vers JMeter qui répond parfaitement au besoin.
J'ai pu tester de très grosse charge, 100 000 mails/5min (peut être pas utile mais on peut le faire ^^).
 
Je vais ouvrir une nouvelle discussion pour le tuning de tout ça.
 
Encore merci pour votre aide :)

Reply

Sujets relatifs:

Leave a Replay

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