#php #email #phpmailer #dkim #msmtp
#php #Адрес электронной почты #phpmailer #dkim #msmtp
Вопрос:
У меня есть готовое PHP-приложение, которое использует msmtp для отправки почты. Некоторые из моих пользователей являются частью другой external_organisation, и им необходимо отправлять электронную почту из моего php-приложения в качестве своего external_organisation.com адрес электронной почты. И некоторым нужно отправлять как mycompany.com
По большей части это работало нормально, до сих пор…
external_organisation недавно настроил DKIM и сказал мне, что мне нужно дать им ключ и подписать отправляемые электронные письма от их имени, иначе они скоро перестанут работать. Я трижды просматривал ВЕСЬ Интернет, но не могу понять, как это сделать.
Могу ли я, пожалуйста, получить несколько указаний?
Я предполагаю, что мне нужно настроить msmtp, а не PHPMailer? Я действительно не уверен в этом.
Комментарии:
1. Вам нужно настроить DNS и SMTP-ретранслятор (сервер), а не клиентов.
2. Вы можете настроить sendmail на использование вышестоящего сервера ретрансляции SMTP и выполнить подпись DKIM. Я сделал это с SMTP-сервером, который сам не выполняет DKIM. Сейчас он отлично работает, но его было сложно настроить. Sendmail намного сложнее настроить, чем msmtp.
Ответ №1:
Этот вопрос лучше подходит для ServerFault, поскольку это вопрос конфигурации сервера, а не вопрос программирования.
Определенно лучше и быстрее настроить ваш почтовый сервер для выполнения подписи, а не PHPMailer, но вам нужен какой-то способ указать селектор для подписи (при условии, что вы хотите использовать более одного). Большинство почтовых серверов, поддерживающих DKIM, позволяют вам делать это через заголовок со специальным именем, но вам нужно будет обратиться к их документам по нему.
Самый простой способ настроить вещи — подписать своим собственным закрытым ключом и заставить внешнюю организацию поместить ваш открытый ключ в их DNS в TXT
запись под вашим селектором, например в yourservice._domainkey.external-org.example.com
Кроме того, они могут настроить CNAME
для вашей службы в своем DNS, и тогда вы получите контроль над открытым ключом в своем DNS. Что-то вроде external-org.yourservice.example.com
.
В любом случае, где бы ни происходило подписание, необходим доступ к закрытому ключу, а домен и селектор должны указывать на открытый ключ в DNS.
Небольшой совет: высказывания типа «Я обыскал ВЕСЬ Интернет три раза» вряд ли произведут хорошее впечатление. Существует множество статей о том, как использовать DKIM, и все они будут говорить в основном об одном и том же, потому что это одно и то же.
Комментарии:
1. спасибо за это. Я заблудился на первом шаге, после этого я думаю, что все в порядке. Итак, я хочу подписывать все свои электронные письма своим закрытым ключом, а не только электронные письма, предназначенные для конкретной внешней организации?
2. Нет, вы можете подписывать любые сообщения, которые вам нравятся; вам не обязательно делать все из них, хотя это неплохая идея, если вы можете. Если вы это сделаете, это означает, что DMARC становится намного эффективнее. Оба описанных мной подхода к DNS — это способ для внешней организации сообщить «этому домену разрешено подписывать сообщения для нашего домена».