2017-08-02 1 views
0

Je dois mettre en place un script pour envoyer des e-mails au nom d'un serveur de messagerie existant. Le serveur de messagerie ne prend en charge qu'une seule méthode d'authentification, à savoir "Authentification par certificat client". Je n'ai qu'une adresse e-mail et un certificat pour m'authentifier via mon script php (pas de mot de passe), et envoyer des emails. et qui est la seule chose que je sais sur le serveur :(.Connectez-vous au serveur smtp avec le certificat client (sans mot de passe) du script php et envoyez un e-mail

Je n'ai pas beaucoup idée sur l'authentification de certificat client, ai recherché sur déjà, mais n'a pas pu trouver des documents utiles pour le cas particulier.

certains peuvent plaidoyers buddy me pointent vers la bonne direction?

Répondre

0

bonne question. C'est un peu une supposition, mais je pense que vous devez désactiver auth normal et fournir le certificat client via le stream context options passé à la connexion TLS.

Je suggère ces changements sur un régulier PHPMailer SMTP + S connexion TARTTLS:

$mail->SMTPSecure = 'tls'; 
$mail->Port = 587; 
$mail->SMTPAuth = false; 
$mail->SMTPOptions = [ 
    'ssl' => [ 
     'verify_peer' => true, 
     'local_cert' => '/path/to/client_cert_and_key.pem' 
    ] 
]; 

Le fichier cert local doit contenir à la fois la clé privée du client et le certificat au format PEM.

Examinez this example pour obtenir un code plus complet qui utilise les options de contexte de flux SSL.