В качестве почтового сервера я использую iredmail
. У меня есть почтовый сервер со следующими настройками:
# /etc/hostname
mail
# /etc/hosts
127.0.1.1 mail.mydomain.com mail
127.0.0.1 localhost
так что полное доменное имя mail.mydomain.com
.
Вот Я нашел примеры, которые использовал, но с этими примерами мой сервер мог отправлять электронные письма, но не мог получать:
Type Name Value TTL
A @ 195.201.40.1 1 hour # Web server
A mail 195.201.40.2 1 hour # Mail server
MX @ mail.mydomain.com (Priority: 10) 1 hour
TXT @ v=spf1 ip4:195.201.40.2 -all 1 hour
TXT @ v=DMARC1; p=reject; sp=reject;... 1 hour
TXT _adsp._domainkey dkim=all
TXT dkim._domainkey v=DKIM1; k=rsa; p=MIGfMA0GCSq...
Потом поменял:
MX @ mail.mydomain.com (Priority: 10) 1 hour
к
MX mail mail.mydomain.com (Priority: 10) 1 hour
и почтовый сервер начал получать письма.
У меня два блока вопросов:
1) Насколько я понимаю, внешние почтовые сервисы (например gmail) отправляют письма на mydomain.com
, а не mail.mydomain.com
, потому что мой адрес электронной почты выглядит как somename@mydomain.com
и не нравится somename@mail.mydomain.com
. Зачем менять @
к mail
решил проблему получения писем?
Я понимаю запись MX @ mail.mydomain.com
как: «внешняя почтовая служба, если вы отправляете письмо на somename@mydomain.com (@ = mydomain.com), затем отправляете письмо на сервер с полным доменным именем mail.mydomain.com», но моя логика, похоже, не работает. Зачем?
Вот мы видим, что имя хоста может быть @
с другим FQDN. Почему в моем случае не работает?
2) Какое имя я должен указать для записей TXT? @
или mail
, т.е. доменное имя или имя хоста? Если mail
, значит ли это, что если у меня есть 10 почтовых серверов, для всех мне нужно делать свои собственные записи TXT?
1) Почта будет отправлена на имя хоста, указанное в записи MX для части имени хоста адреса электронной почты. Например, когда почта отправляется на адрес something@gmail.com, происходит следующее:
Для gmail.com берется одна из настроенных записей MX:
# dig mx gmail.com +short | head -n 1
5 gmail-smtp-in.l.google.com.
Электронная почта доставляется на IP-адрес соответствующего почтового сервера:
# dig gmail-smtp-in.l.google.com +short
173.194.221.27
В вашем случае неясно, как была решена проблема, поскольку первоначальная конфигурация выглядит хорошо. Попробуйте проверить, какой MX-сервер отвечает за ваше доменное имя и к какому IP-адресу он относится, используя общедоступный DNS:
# dig mx mydomain.com @8.8.8.8 +short
mail.mydomain.com
# dig mail.mydomain.com @8.8.8.8 +short
2) Доменное имя (без mail.
часть) должна быть предусмотрена для записи SPF. Что касается DKIM и DMARC, то к доменному имени также следует добавлять префиксы (без mail.
часть), например:
TXT _dmarc v=DMARC1; p=reject; sp=reject;...
TXT dkim._domainkey v=DKIM1; k=rsa; p=MIGfMA0GCSq...
Я перевел ваши записи DNS в формат привязки. Если вы не изменяете запись, вам не нужно указывать TTL для записи.
Я преобразовал записи SPF в простейший вид. В A
правило для mail
запись для SPF -helo
чеки. Правило для www
указывает, что электронная почта не должна отправляться из www
поддомен.
Записи для вашего домена и поддоменов следуют. (Обратите внимание на точку в конце записи MX. Если она отсутствует, просто используйте mail
).
@ IN A 195.201.40.1
IN MX mail.mydomain.com.
IN TXT "v=spf1 mx -all"
Стандартная служебная почта и www (некоторые браузеры будут пытаться использовать www, даже если он не указан в записи).
mail IN A 195.201.40.2
IN TXT "v=spf1 a -all"
www IN A 195.201.40.1
IN TXT "v=spf1 -all"
Настройка DMARC с отчетностью. Пока в отчетах не будет указано, что у вас нет проблем, я бы не стал использовать reject
политика. Вы можете начать с none
как ваша политика.
_dmarc IN TXT "v=DMARC1; p=reject; sp=reject;..."
*._report.dmarc IN TXT "v=DMARC1"
Конфигурация для DKIM. _adsp
похоже, больше не соответствует стандартам. Заменить dkim
с ключевым именем, которое вы используете при подписании.
_adsp._domainkey IN TXT dkim=all
dkim._domainkey IN TXT v=DKIM1; k=rsa; p=MIGfMA0GCSq...