Недавно я установил почтовый сервер на сервере digitalocean с postfix & dovecot. Он отлично работает для основного домена: example.com
Я также создал поддомен: verify.example.com
Отправка и получение работает для них обоих. Пока я недавно не столкнулся с проблемой с поддоменом. Пользователь попытался отправить письмо на адрес user@verify.example.com со своего сервера. Но я так и не получил эту почту.
Вот часть /var/log/mail.log:
postfix/smtpd[2627]: connect from gproxy3-pub.mail.unifiedlayer.com[69.89.30.42]
postfix/policy-spf[2635]: Policy action=PREPEND Received-SPF: pass (userdomain.com: Sender is authorized to use 'username@userdomain.com' in 'mfrom' identity (mechanism 'include:hostmonster.com' matched)) receiver=example.com; identity=mailfrom; envelope-from="username@userdomain.com"; helo=gproxy3-pub.mail.unifiedlayer.com; client-ip=69.89.30.42
postfix/smtpd[2627]: warning: connect to mysql server 127.0.0.1: Access denied for user 'UNKNOWN_USER'@'localhost' (using password: YES)
postfix/smtpd[2627]: warning: mysql:/etc/postfix/mysql/virtual_mailbox_maps.cf lookup error for "user@example.com"
postfix/smtpd[2627]: NOQUEUE: reject: RCPT from gproxy3-pub.mail.unifiedlayer.com[69.89.30.42]: 451 4.3.0 <user@example.com>: Temporary lookup failure; from=<username@userdomain.com> to=<user@example.com> proto=SMTP helo=<gproxy3-pub.mail.unifiedlayer.com>
postfix/smtpd[2627]: disconnect from gproxy3-pub.mail.unifiedlayer.com[69.89.30.42]
Обратите внимание, что в файле журнала написано user@example.com но письмо отправлено на user@verify.example.com.Похоже, что электронное письмо «перенаправлено» с поддомена на основной домен. У меня эта проблема только с сервера этого пользователя. Для других пользователей такой проблемы пока нет.
У меня есть записи MX и CNAME для verify.example.com.
Извините, что не уловил это сразу, потому что проблема в следующем:
У меня есть записи MX и CNAME для verify.example.com.
CNAME могут существовать только как отдельные записи и не объединяться с другими записями ресурсов. Это указано в RFC 1034, раздел 3.6.2.
Причина, по которой электронная почта ломается, находится в RFC 5321, раздел 5.1:
Это доменное имя при запросе ДОЛЖНО возвращать хотя бы одну адресную запись (например, A или AAAA RR), которая дает IP-адрес SMTP-сервера, на который должно быть направлено сообщение. Любой другой ответ, в частности, включая значение, которое будет возвращать запись CNAME при запросе, выходит за рамки настоящего стандарта. Запрет на использование меток в данных, разрешаемых в CNAME, более подробно обсуждается в RFC 2181, раздел 10.3.
Когда вы изменили CNAME на запись A, вы перешли от неправильной работы к правильной, поэтому она начала работать.
Между прочим, это яркий пример того, почему обфускация вашего доменного имени бесполезна. Если бы вы дали свое настоящее доменное имя, я бы, вероятно, нашел ошибку, просто проверив вашу настройку.