Назад | Перейти на главную страницу

Как правильно настроить DNS для 2-х серверов: один для веб, другой для почты?

В качестве почтового сервера я использую 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...