[PHP] Sockets en SMTP

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • xces
  • Registratie: Juli 2001
  • Laatst online: 20-09 16:56

xces

To got or not to got..

Topicstarter
Eigenlijk wilde ik de titel "Sokjes en eSeMTeePee" maken maar dan zouden niet veel mensen het snappen ;)

Mgoed, ik heb een email check script ooit eens gevonden dat eerst het MX record van een host opzoekt en vervolgens verbinding met die host maakt om te kijken of die user bestaat...

Leuk.. Maar niet leuk met 1350 email adressen...

Nu heb ik het inmiddels zo getuned dat de adressen eerst op domain worden gesorteerd voordat ze gecontroleerd werden (dat was eerst niet zo :D) en dat er per x dat het domain veranderd 1x een MX host lookup wordt gedaan, omdat 3x een lookup op hotmail toch wel dezelfde MX hosts geeft.

Anyway een MX lookup geeft een array terug en nog een verbetering die ik heb aangebracht is dat hij automatisch naar de volgende MX host gaat als de eerste niet (meer) beschikbaar is. Kortom, we komen ergens en ik denk dat ik op de goede weg zit.

Ik merk dat het nu al sneller gaat maar vroeg me het volgende af;
Is het mogelijk (ondersteund het SMTP protocol dat) om meerdere "RCTP TO"'s te sturen naar de server en zo ja hoeveel? Want als ik dat weet ga ik gewoon het maximaal aantal users per x checken, scheelt in ieder geval per user een verbinding openen wat natuurlijk niet echt de slimste manier is... En ik denk ik vraag het even voordat ik er een paar uur werk in ga stoppen en het niet schijnt te werken...

[ Voor 9% gewijzigd door xces op 12-06-2004 13:48 ]


Acties:
  • 0 Henk 'm!

  • Shadowman
  • Registratie: Januari 2002
  • Niet online
Het smtp-protocol ondersteund wel om meerdere RCPT TO's op te geven. Het nadeel is wel dat de ISP's een limiet instellen van het aantal RCPT TO's. Ik dacht dat het aantal toegelaten RCPT TO's 5 tot 10 was, maar dat weet ik niet zeker. (En het verschilt natuurlijk ook per provider).

Je kunt wel ff kijken welke foutmelding je krijgt van de SMTP-server wanneer je er teveel doorgeeft.

[ Voor 27% gewijzigd door Shadowman op 12-06-2004 13:50 ]


Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
Kun je die mx-hosts niet cachen in een database? En dan zodra je een error krijgt dat de server niet bestaat deze updaten? Dat scheelt ook nog wat tijd imo.

Acties:
  • 0 Henk 'm!

  • xces
  • Registratie: Juli 2001
  • Laatst online: 20-09 16:56

xces

To got or not to got..

Topicstarter
Mjah dat dacht ik dus zelf ook al, ik heb er RFC 821 bijgepakt en kwam tot de volgende regels:
If the SMTP-receiver can accept mail for that recipient it responds with an OK reply; if not, it responds with a reply rejecting that recipient (but not the whole mail transaction).
Verderop stond nog dit:
RCPT <SP> TO:<forward-path> <CRLF>

This command gives a forward-path identifying one recipient. If accepted, the receiver-SMTP returns a 250 OK reply, and stores the forward-path. If the recipient is unknown the receiver-SMTP returns a 550 Failure reply. This second step of the procedure can be repeated any number of times.
Dus eigenlijk moet ik het zo maken dat;
- Ik een connectie open
- een mail from geef (totdat ik een goed "from" adres heb)
- vervolgens een aantal mail adressen naar de server pomp
- Als de verbinding gesloten wordt opnieuw beginnen..

Weet iemand de foutmelding die SMTP servers in zo'n geval geven?
djluc schreef op 12 juni 2004 @ 13:52:
Kun je die mx-hosts niet cachen in een database? En dan zodra je een error krijgt dat de server niet bestaat deze updaten? Dat scheelt ook nog wat tijd imo.
Dat doe ik dus nu al, omdat ik de email adressen sorteer op domain hoef ik maar 1 lookup over het geheel te doen ipv een lookup bij ieder adres.

[ Voor 20% gewijzigd door xces op 12-06-2004 13:54 ]


Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
Dat doe ik dus nu al, omdat ik de email adressen sorteer op domain hoef ik maar 1 lookup over het geheel te doen ipv een lookup bij ieder adres.
Ik bedoel dat je die ook nog over kunt slaan. Je haalt eenmalig een lijstje met hosts uit je db en zet die in een array. Daar kun je sneller de juiste mx uit halen dan met een lookup.

Acties:
  • 0 Henk 'm!

  • xces
  • Registratie: Juli 2001
  • Laatst online: 20-09 16:56

xces

To got or not to got..

Topicstarter
Mjah snap het wel, maar het kan natuurlijk altijd zo zijn dat een bepaalde MX host er niet meer is. Besides, 80% is hotmail adressen dwz dat ik een stuk of 20 keer een mx lookup doe ipv 1350 keer eerst.

Ik heb gekeken naar RFC 821 ...
En aan de hand daarvan kwam ik tot de conclusie dat ik inderdaad kon testen hoeveel RCPT's er gestuurd konden worden maar ik kon veel beter het RSET commando gebruiken. Dat is volgens die RFC een basis commando wat door iedere server moet worden geaccepteerd.

Dus nu heb ik het zo gemaakt dat hij een MAIL FROM en een RCPT TO stuurt, en als beide reacties 250 / 251 zijn weet ik dat het goed is gegaan. Zodoende kan ik de verbinding met de mail server open houden. Indien de verbinding om wat voor reden eruit klapt maak ik gewoon weer verbinding :)

Nu nog ff een test run doen tussen oud en nieuw maar het gaat zoiezo al een HEEL stuk sneller nu, denk niet dat ik hem veel sneller kan maken })

[ Voor 71% gewijzigd door xces op 12-06-2004 16:43 ]

Pagina: 1