У меня есть выделенный сервер (Ubuntu 14.04) с Postfix / Dovecot на IP 1.1.1.1
У меня 4 домена: 2 на IP 1.1.1.1, 1 на IP 1.1.1.2 и 1 на IP 1.1.1.3. Каждый из этих доменов имеет запись DNS (A domain.com/mail.domain.com, запись MX, SPF и т. Д.), Указывающую на их собственный IP-адрес.
Проблема в том, что всякий раз, когда я отправляю электронное письмо и проверяю его заголовок, я вижу:
> X-Spam-Last-External-IP: 1.1.1.1
> X-Spam-Last-External-HELO: server.hostname.com
> X-Spam-Last-External-rDNS: Default Domain on 1.1.1.1
> Received: from server.hostname.com (Default Domain [1.1.1.1])
etc..
Разве невозможно отображать информацию, относящуюся к временному домену, вместо информации о сервере? Например 1.1.1.2 IP и mail.domain2.com имя хоста и т. Д.?
Я не думаю, что один процесс postfix может прослушивать все адреса, но использовать несколько имен хостов, например, для заголовков HELO, потому что протокол SMTP не поддерживает возможность указать клиентом имя хоста.
Рассмотрим на мгновение виртуальный хостинг HTTP как аналогичный сценарий, возможно, тот, который вы имеете в виду. Клиент разрешает имя хоста, затем делает HTTP-запрос, указав имя хоста в Host
заголовок. Этот заголовок делает возможным виртуальный хостинг.
Теперь рассмотрим HTTPS. До относительно недавнего времени не было возможности разместить несколько виртуальных хостов HTTPS на сервере, потому что Host
заголовок был частью зашифрованной полезной нагрузки, поэтому необходимо было установить сеанс TLS перед заголовок Host будет отправлен. Но поскольку сертификат, предоставленный сервером, зависел от Host
имя, это означало, что IP-адрес должен был быть выделен для каждого отдельного имени HTTPS-сервера (или, точнее, для каждого общего имени сертификата https. Подстановочные знаки могут совпадать с несколькими).
Сравнительно недавно Расширение SNI был добавлен к HTTPS, чтобы решить эту проблему, поэтому теперь Host
заголовок доступен серверу перед сеанс TLS установлен.
Хорошо, вернемся к SMTP. Клиент SMTP не указывает конкретное имя сервера при подключении. Сервер фактически идентифицирует себя до того, как хост что-либо спросит!
$ telnet gmail-smtp-in.l.google.com. 25
Trying 74.125.29.27...
Connected to gmail-smtp-in.l.google.com.
Escape character is '^]'.
220 mx.google.com ESMTP 11si20717228qkl.61 - gsmtp
Однако есть кое-что, что вы можете сделать в вашей ситуации, но это довольно неудобно. Вы можете запустить несколько серверов postfix, каждый из которых прослушивает выделенный IP-адрес и каждый настроен на ответ с соответствующим именем. Насколько я понимаю, это единственный способ добиться того, чего вы хотите, и аналогично запуску https-серверов на выделенных IP-адресах в дни до появления SNI.
Надеюсь, поможет.
Для этого вам понадобится установка Postfix, использующая «несколько экземпляров». Каждый экземпляр будет подключаться к своему определенному IP (и только этому IP) как для входящей, так и для исходящей почты.
http://www.postfix.org/MULTI_INSTANCE_README.html
Теоретически можно было бы определить выделенные транспорты «smtp» в master.cf (каждый из которых привязан ровно к одному IP-адресу), но не было бы простого способа указать Postfix, какой IP-адрес использовать для исходящей почты.