Мне нужно реализовать скрипт для отправки писем от имени существующего почтового сервера.
Сервер электронной почты поддерживает только один способ аутентификации — «Аутентификация сертификата клиента». У меня есть только адрес электронной почты и сертификат для аутентификации через мой php-скрипт (без пароля) и отправки электронных писем. и это единственное, что я знаю о сервере :(.
Я не очень разбираюсь в проверке подлинности клиентского сертификата, уже искал, но не смог найти никаких полезных документов для конкретного случая.
Могут ли какие-то приятельские просьбы указать мне правильное направление?
Хороший вопрос. Это немного предположение, но я ожидаю, что вам нужно отключить обычную аутентификацию и предоставить сертификат клиента через параметры контекста потока перешел на соединение TLS.
Я предлагаю эти изменения для обычного соединения PHPMailer SMTP + STARTTLS:
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
$mail->SMTPAuth = false;
$mail->SMTPOptions = [
'ssl' => [
'verify_peer' => true,
'local_cert' => '/path/to/client_cert_and_key.pem'
]
];
Локальный файл сертификата должен содержать как личный ключ клиента, так и сертификат в формате PEM.
смотреть на этот пример для более полного кода, который использует параметры контекста потока SSL.
Других решений пока нет …