[PHP+MySQL] E-mail opslaan in MySQL

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het uitlezen van een POP3 of IMAP account middels PHP is tegenwoordig kinderspel.

Mijn doel is echter om e-mail rechtstreeks op te slaan in MySQL. Zijn hier oplossingen voor?

NB: Het iedere minuut uitlezen van een POP-account, de e-mails in te lezen middels PHP en ze vervolgens weg te schrijven naar MySQL lijkt me namelijk niet echt ideaal. Beetje overkill voor de load op de server....

Acties:
  • 0 Henk 'm!

  • Rmg
  • Registratie: November 2003
  • Laatst online: 14:47

Rmg

Aangezien er geen SELECT email FROM POP3 functie bestaat zal je nooit 'direct' je mail in een mysql database krijgen zal je altijd een programma tussen moeten hebben in php/c/java whatever :?

Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
Wat is de reden dat je het direct in een database wil hebben staan? Vind je dat het teveel performance kost om altijd de pop of imap server te pollen voor nieuwe emails?

Als je een scriptje maakt in php heb je eigenlijk twee manieren om die uit te voeren: via een browser request of een cron job. Als je via de browser het uit laat voeren ben je afhankelijk van het bezoek van die pagina. Aangezien je direct de email op wil slaan zal dat niet je voorkeur hebben.
De cron job is ook mogelijk. Dan start je bijvoorbeeld elke 5 minuten het scriptje wat kijkt of er nieuwe email is. Maar voordat je zoiets gaat doen lijkt me dat je eerst nog even goed moet bedenken of het opslaan van email in een database nu wel de beste optie is.

Je geeft dus eigenlijk zelf al je oplossingen, maar ik zou eerder kijken naar de reden waarom je in een database je emails wilt opslaan.

[ Voor 9% gewijzigd door mithras op 23-06-2009 14:53 ]


Acties:
  • 0 Henk 'm!

  • Japius
  • Registratie: April 2003
  • Laatst online: 30-08 20:57
Verwijderd schreef op dinsdag 23 juni 2009 @ 14:45:
... Beetje overkill voor de load op de server....
:? beetje server moet daar geen moeite mee hebben, lijkt me?

Acties:
  • 0 Henk 'm!

  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Je kunt natuurlijk een 'vacation' replacement schrijven. Ofwel de mailserver stuurt de mail raw door aan een programma en verwacht een bepaalde exitcode om aan te geven dat het bericht correct is verwerkt (vrijwel altijd 0).

Kijk dus even naar de mogelijkheden van je mailserver..

If it isn't broken, fix it until it is..


Acties:
  • 0 Henk 'm!

  • FragFrog
  • Registratie: September 2001
  • Laatst online: 18-09 17:57
Verwijderd schreef op dinsdag 23 juni 2009 @ 14:45:
Mijn doel is echter om e-mail rechtstreeks op te slaan in MySQL. Zijn hier oplossingen voor?
MySQL specifiek weet ik niet, maar er zijn genoeg e-mail servers die een database als storage engine gebruiken - Exchange en MSSQL bijvoorbeeld als ik me niet vergis :) mm, even nagezocht (alweer een tijd geleden dat ik er mee gewerkt heb) maar zo te zien toch niet :/

[ Voor 12% gewijzigd door FragFrog op 23-06-2009 15:12 ]

[ Site ] [ twitch ] [ jijbuis ]


Acties:
  • 0 Henk 'm!

  • KabouterSuper
  • Registratie: September 2005
  • Niet online
qmail schijnt dit te kunnen door een zogenaamd .qmail file aan te maken met daarin het command line php-commando, bijv /usr/bin/php /home/crm/bin/request.php

Je kunt in request.php het bericht lezen via
PHP:
1
$message = file_get_contents('php://stdin');

[ Voor 26% gewijzigd door KabouterSuper op 23-06-2009 15:13 ]

When life gives you lemons, start a battery factory


Acties:
  • 0 Henk 'm!

  • _JGC_
  • Registratie: Juli 2000
  • Laatst online: 15:13
Exchange is begonnen als mailserver die om een access database heen is gebouwd. Inmiddels is daar zoveel aan geoptimaliseerd en aangepast dat het wel niet meer van toepassing zal zijn, maar je storage backend is nog steeds een enorme databasefile. Exchange is overigens geen mailserver, het is een groupware server met mailfunctionaliteit ;)

Je kunt met php idd van stdin lezen. Je kunt gewoon een eigen MDA in PHP schrijven die de mail op stdin leest en de parameters gebruikt om het record op de juiste manier op te bouwen. Bijna alle mailservers kunnen mail via een MDA afleveren.

Acties:
  • 0 Henk 'm!

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Misschien een optie om te kijken hoe andere mail scripts zoals roundcube het doen?

Mijn persoonlijk voorkeur zou uitgaan naar IMAP overigens, dan kan je het tenminste op meerdere plaatsen lezen/verwijderen/etc...

Blog [Stackoverflow] [LinkedIn]


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Nu online

Creepy

Tactical Espionage Splatterer

Verwijderd schreef op dinsdag 23 juni 2009 @ 14:45:
Het uitlezen van een POP3 of IMAP account middels PHP is tegenwoordig kinderspel.

Mijn doel is echter om e-mail rechtstreeks op te slaan in MySQL. Zijn hier oplossingen voor?

NB: Het iedere minuut uitlezen van een POP-account, de e-mails in te lezen middels PHP en ze vervolgens weg te schrijven naar MySQL lijkt me namelijk niet echt ideaal. Beetje overkill voor de load op de server....
Tuurlijk. Wat heb je zelf al gevonden? Zijn die oplossingen niet voldoende? Er zijn mailservers die scripts kunnen uitvoeren bij het ontvangen van een mail, en er zijn mailservers die zelf de mail in een database kunnen opslaan. Met een beetje google werk moet je dat toch kunnen vinden ;)

Een vraag dumpen en wachten op een oplossing zonder zelf enige inzet te tonen is hier niet de bedoeling. Je hebt vast al het 1 en ander uitgezocht, dus geef dat dan ook aan.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

Verwijderd

Postfix heeft ook de optie om MySQL als DB te gebruiken. Sendmail dacht ik ook, dit weet ik echter niet zeker.

Acties:
  • 0 Henk 'm!

  • DiedX
  • Registratie: December 2000
  • Nu online
Verwijderd schreef op dinsdag 23 juni 2009 @ 17:16:
Postfix heeft ook de optie om MySQL als DB te gebruiken. Sendmail dacht ik ook, dit weet ik echter niet zeker.
Voor de opslag van de configuratie-data. Postfix en Sendmail zelf zijn geen POP3 of IMAP-servers, en doen daar verder niets mee.

DiedX supports the Roland™, Sound Blaster™ and Ad Lib™ sound cards


Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
DiedX schreef op dinsdag 23 juni 2009 @ 17:18:
[...]

Voor de opslag van de configuratie-data. Postfix en Sendmail zelf zijn geen POP3 of IMAP-servers, en doen daar verder niets mee.
Tja direct niet, maar bijv postfix heeft wel de mogelijkheid om mail te forwarden naar een script.

Dan kan je al het pollen etc uitschakelen, het script wordt alleen uitgevoerd als je mta iets ontvangt ( voor die ontvanger ), het script leest stdin uit en slaat dit op ( niet veel meer laten doen ivm race conditions bij een spam-attack )

In wezen als je mta een spam-filter ondersteunt dan kan je er ook een php-script tussenhangen

Acties:
  • 0 Henk 'm!

  • Y0ur1
  • Registratie: Oktober 2000
  • Niet online
Kijk eens naar http://www.dbmail.org/ :)
Pagina: 1