PHP HTTP Basic Authentifizierung via POP3?

volcem

Lieutenant
Registriert
Dez. 2007
Beiträge
1.021
Hey liebe Programmier-Kollegen,

ich update gerade ein altes Projekt was ich vor einem Jahr mal geschrieben habe.
Problem ist, die Firma wo das CMS gehostet ist, verlangt nun für den Mail Versand eine Authentifizierung via POP3 um anschließend die simple mail() Funktion nutzen zu können.

Mein Bruder meinte, er könne die Sicherheitsregel nicht für mich ändern, da sein Vorgesetzter das sehen würde.
-.-

Ich selber habe mich noch nie mit POP3 Authentifizierung mit PHP auseinander gesetzt.

Google spuckt auch nicht wirklich was brauchbares aus, vielleicht benutze ich auch einfach nur die falschen search keys :(

Hat irgend wer ne Seite wo ich nachlesen kann wie ich mich zuerst via pop3 mit einem script anmelde und die Verbindung offen halte um mail() verwenden zu können?
 
Kenne mich da selbst nicht aus, aber es gibt den "PHPMailer", der kann genau das / oder nutzt genau das, was du nutzen möchtest (siehe in dessen Paket docs/pop3_article.txt).

Ansonsten hört es für mich eigtl. so an, dass du einfach nur 1x die Mails abrufen musst bzw. die POP3 Verbindung aufbauen musst um dann ein Zeitfenster für den E-Mail Versand zu haben.
 
Hmm..

Ansonsten hört es für mich eigtl. so an, dass du einfach nur 1x die Mails abrufen musst bzw. die POP3 Verbindung aufbauen musst um dann ein Zeitfenster für den E-Mail Versand zu haben.

Genau, ich muss einmal die Verbindung aufbauen damit ich ne Session bekomme, damit ich meine Newsletter an alle senden kann, ohne dass sich die Verbindung schließt.
Ansonsten bekomme ich nen Fehler weil keine Rechte...

Ich werde es mir mal angucken und schauen ob man die Klasse oder Funktion da benutzen kann.

Sonst wer noch Ideen, wo ich was zu diesem Thema lesen kann?
 
Aha - 'POP before SMTP' auch für lokale Mailsender oder was? Der Sinn dieser Konfiguration darf kritisch hinterfragt werden.
 
Ich hab sowas gestern erst in Perl gemacht. Du musst dich nur via pop verbinden. Ein Abrufen von Nachrichten ist nicht notwendig.

Da PHP aber E-Mails scheinbar nur über die IMAP-Bibliothek abruft, müsstest du mal unter http://de.php.net/imap das erste Kommentar lesen.

Code:
function pop3_login($host,$port,$user,$pass,$folder="INBOX",$ssl=false) 
{ 
    $ssl=($ssl==false)?"/novalidate-cert":""; 
    return (imap_open("{"."$host:$port/pop3$ssl"."}$folder",$user,$pass)); 
}

damit müsstest du dann eigentlich nur das folgende machen:
Code:
imap_close(pop3_login($host,$port,$user,$pass))
Das ist aber kein echtes POP3, weil es über das IMAP-Protokoll (und damit auch einen anderen Port: 143 statt 110) läuft.
Es wäre also zu testen, inwieweit das als POP3-Authentifizierung für deinen Server zählt.

Ansonsten bleibt dir wahrscheinlich nur, eine Verbindung via fsockopen zu öffnen und dich dort manuell zu authentifizieren.

Das Verfahren kannst du hier bzw. im RFC nachlesen.

Kurzzusammenfassung:
1. Du verbindest dich:
Code:
$pop3 = fsockopen('pop3.deinserver.de', 110);
1.a) Du lässt dir die Willkommenszeile anzeigen:
Code:
$ret = fgets($pop3);
2. Du teilst dem Server deinen Benutzernamen mit:
Code:
fputs ($pop3, "user BENUTZERNAME\r\n");
2.a) Du erhältst ein "+OK" vom Server:
Code:
$ret = fgets($pop3);
3. Du teilst dem Server dein Passwort mit:
Code:
fputs ($pop3, "pass PASSWORT\r\n");
3.a) Du erhältst ein "+OK" vom Server:
Code:
$ret = fgets($pop3);
4. Du beendest die Verbindung:
Code:
fclose($pop3);

Testweise kannst du das ganze auch per Telnet nachvollziehen.
Code:
telnet pop.gmx.de 110
  +OK POP server ready H migmx004
user name@gmx.de
  +OK password required for user "name@gmx.de"
pass dein_passwort
  +OK mailbox "name@gmx.de" has 380 messages (7823902 octets) H migmx004
 
@XunnD

Ist nen Mailserver wo mehrere Kunden drüber laufen, ich kann nichts für deren Sicherheitseinstellungen.
So ist die Funktion für im Web erreichbare Server schon ok. Nur nervt mich gerade...

@pcw

Ah, dass sieht doch schon mal ganz gut aus, ich werde dass mal alles in Ruhe durchlesen und die Schritte verfolgen.
Ich danke Dir.
 
Zuletzt bearbeitet:
Zurück
Oben