Виртуальные MTA в PowerMTA
Создание, редактирование и настройка VirtualMTA <virtual-mta mta> в PowerMTA:
Виртуальные MTA в конфигурации PMTA позволяют разделять трафик на отдельные управляемые почтовые потоки, распределять их по группе ip адресов, балансировать почтовый трафик на smtp и т.п, при одной системной конфигурации или объединять в пул множество ip/smtp для последующего распределения и ротации.
PowerMTA.
Статья — усеченный перевод 8 раздела официальной справки PMTA с дополнениями © My-Mails
Поддержка VirtualMTA / VirtualMTA Support
VirtualMTA определяются с помощью директивы <virtual-mta>.
Создайте группы <virtual-mta> с желаемыми псевдонимами и присвоением имени хоста и IP-адреса SMTP.
Например: создать VMTA с именем mta1, просто добавьте в файл конфигурации:
в нашей версии 4.5r1 /etc/pmta/virtualhost.txt
<virtual-mta mta1> smtp-source-host 1.2.3.4 mta1.port25.com </virtual-mta>
Обратите внимание, что если вы опустите в определении директиву smtp-source-host, PowerMTA, будет использовать глобальные настройки для этого VMTA.
Рекомендуется указывать директивы имени хоста в каждом определении VirtualMTA.
Убедитесь, в правильности имени хоста: smtp-source-host 2.3.4.5 mta2.port25.com
Если в определении указано более одного адреса smtp-source-host, PowerMTA будет использовать различные исходные IP-адреса в циклическом порядке для соединений:
<virtual-mta mta3> smtp-source-host 1.2.3.4 mta4.port25.com smtp-source-host 2.3.4.5 mta5.port25.com smtp-source-host 3.4.5.6 mta6.port25.com </virtual-mta>
Пулы VirtualMTA
PowerMTA поддерживает определение и выбор пулов VirtualMTA для каждого сообщения или кампании, которые в основном состоят из нескольких VirtualMTA, сгруппированных в пул.
Когда Пул определен и выбран для кампании, PowerMTA будет использовать перечисленные VirtualMTA в ротации.
Пулы VirtualMTA определяются с помощью новой директивы <virtual-mta-pool>.
Определение пул влечет за собой создание группы <virtual-mta-pool> с желаемым псевдонимом и перечислением VirtualMTA, которые вы хотите объединить в группу.
Например, если вы хотите создать пул VirtualMTA с именем pond, вы должны сначала определить конкретные VirtualMTA, которые будут входить в группу, а затем впоследствии перечислите каждый из них в <virtual-mta-pool pond>:
Определяем VMTA
<virtual-mta mta1> smtp-source-host 1.2.3.4 mta1.port25.com </virtual-mta> <virtual-mta mta2> smtp-source-host 2.3.4.5 mta2.port25.com </virtual-mta>
Объединяем в пул
<virtual-mta-pool pond> virtual-mta mta1 virtual-mta mta2 </virtual-mta-pool>
Важно: имя virtual-mta-pool на может совпадать с именем virtual-mta
Выбор пула VirtualMTA
PMTA поддерживает различные методы выбора VirtualMTA (или пула) в зависимости от ваших методов соединения:
- API представления:
Путем определения переменной * vmta mailmerge в сообщениях mailmerge;
С помощью setVirtualMta или эквивалентного метода
- Представление каталога раскладки:
Путем определения переменной * vmta mailmerge в сообщениях mailmerge;
Путем сопоставления с образцом на основе MAIL FROM, RCPT TO или заголовка.
- Отправка SMTP:
— Путем определения переменной * vmta mailmerge в сообщениях mailmerge;
— Путем включения в сообщение заголовка X-virtual-MTA
— Совпадением регулярного выражения SMTP MAIL FROM или RCPT TO адреса или заголовок сообщения;
— Путем настройки VirtualMTA по умолчанию для директивы <source>, выбранной IP-адрес и порт на компьютере PowerMTA, к которому вы подключаетесь
— Путем настройки VirtualMTA по умолчанию для директивы <source>, выбранной
IP-адрес источника
— Методы выбора, перечисленные выше, перечислены в порядке приоритета в каждом представлении.
методы.
Использование mailmerge может повлиять на выбор VirtualMTA. При использовании mailmerge
и API или SMTP, x-virtual-mta будет применяться ко всему заданию mailmerge, а не
отдельные получатели (в большинстве случаев с использованием первого определенного x-virtual-mta).
При использовании mailmerge и списков шаблонов, выбор VirtualMTA будет для каждого получателя
при сопоставлении RCPT TO, и будет только для каждого получателя для MAIL FROM
при использовании переменной * from mailmerge. Когда не используется * из или когда используется
Соответствие заголовка, *all * получатели в задании mailmerge будут использовать один и тот же VirtualMTA (в
в большинстве случаев первый подобранный шаблон).
Обратите внимание, что один выбирает пул VirtualMTA, используя тот же точный заголовок, директивы или
вызов функции, но с использованием имени пула вместо имени VirtualMTA.
Выбор VirtualMTA с помощью X-virtual-MTA Заголовок
Чтобы выбрать VirtualMTA с заголовком X-virtual-MTA, вам необходимо:
Добавить к директиве
- определить VirtualMTA или пул (ы), используя директиву <virtual-mta>;
- определить конкретный IP-адрес или диапазон IP-адресов для источника сообщений
что оно применимо с использованием расширенной директивы <source>;
- определить способность PowerMTA обрабатывать заголовок x-virtual-mta через
директива process-x-virtual-mta в директиве <source>, определенной в шаг 2;
process-x-virtual-mta yes # разрешить выбор VirtualMTA
После правильной настройки файла конфигурации вам просто нужно добавить заголовок xvirtual-mta к вашему сообщению, указав псевдоним VirtualMTA, как в
x-virtual-mta: mta1
где mta1 — псевдоним VirtualMTA в файле конфигурации. Обратите внимание, что PowerMTA
проанализирует и удалит заголовок перед окончательной доставкой, поэтому он не будет виден
почтовый шлюз получателя или получателя.
Например, предполагая, что у вас есть следующее определение VirtualMTA в вашем
конфигурационный файл:
<virtual-mta mta1> smtp-source-host 1.2.3.4 mta1.port25.com </virtual-mta>
и вы хотели, чтобы PowerMTA обрабатывал заголовок x-virtual-mta только из почты
исходя из локального IP-адреса 127.0.0.1 для выбора VirtualMTA, вам потребуется
иметь как минимум следующее в вашем конфигурационном файле;
<source 127.0.0.1> process-x-virtual-mta yes # разрешить выбор VirtualMTA always-allow-relaying yes # разрешить кормление с 127.0.0.1 </source>
При этом любые сообщения, отправленные с локального IP-адреса 127.0.0.1, содержащие
заголовок x-virtual-mta: mta1 будет иметь PowerMTA, используя VirtualMTA mta1 и его
параметры при установлении соединения для доставки этих сообщений. Можно также выбрать
Пул VirtualMTA будет использоваться для сообщений таким же образом.
Выбор VirtualMTA по SMTP MAIL FROM / SMTP RCPT TO
Сайты также могут иметь PowerMTA использовать VirtualMTA или пул VirtualMTA для конкретных
сообщения посредством сопоставления с шаблоном регулярного выражения SMTP MAIL FROM
адрес, SMTP RCPT TO адрес или заголовок, основанный на IP-адресе источника
сообщение.
Чтобы выбрать пул VirtualMTA или VirtualMTA на основе шаблона регулярного выражения
- определить пулы VirtualMTA или VirtualMTA в файле конфигурации, используя
директива <virtual-mta>;
- определить псевдоним для списка шаблонов регулярного выражения с помощью <pattern-list>
директива;
- определить фактический шаблон регулярного выражения, который будет использоваться для сопоставления SMTP MAIL
ОТ, адрес RCPT TO или заголовок, а также последующий VirtualMTA или
Пул VirtualMTA для использования при совпадении через mail-from, rcpt-to и
директивы заголовка. Эти директивы определены в <pattern-list>
определение, созданное на шаге 2;
- определить конкретный IP-адрес или диапазон IP-адресов для источника сообщений
это применимо в расширенной директиве <source>;
- определить директиву pattern-list, используя соответствующий псевдоним, определенный на шаге 2
в директиве <source>, определенной на шаге 4. Условное сопоставление с образцом как
определенные в разделе 3.2.16, также могут быть использованы.
Например, если в вашем файле конфигурации есть следующие определения VirtualMTA:
<virtual-mta mta1> smtp-source-host 1.2.3.4 mta1.port25.com </virtual-mta> <virtual-mta mta2> smtp-source-host 2.3.4.5 mta2.port25.com </virtual-mta>
и вы хотели, чтобы PowerMTA соответствовал шаблонам «abc» и «xyz» в начале
ПОЧТА ОТ адреса, чтобы выбрать соответствующий VirtualMTA для использования для каждого, вы
в вашем конфигурационном файле должно быть как минимум следующее:
<pattern-list group2> mail-from /^abc/ virtual-mta=mta1 mail-from /^xyz/ virtual-mta=mta2 </pattern-list> <source 127.0.0.1> pattern-list group2 # выбирает список шаблонов для сообщений always-allow-relaying yes # разрешить кормление с 127.0.0.1 </source>
При этом любые сообщения, отправленные с локального IP-адреса 127.0.0.1, будут иметь
PowerMTA с использованием сопоставления регулярных выражений по адресу MAIL FROM, и если
PowerMTA обнаружил «abc» в начале адреса (например, abc2890u8@bounces.port25.com), VirtualMTA mta1 и его параметры будут использованы
при создании соединений для доставки этих сообщений. Для отправленных сообщений, которые имели
ПОЧТА ОТ, начиная с «xyz», например, xyz-ljwer@bounces.port25.com,
VirtualMTA mta2 и его параметры вместо этого будут использоваться при подключении к
доставить эти сообщения.
Чтобы дополнительно выбрать несколько других VirtualMTA для получателей на yahoo.com, вы можете
добавьте директиву rcpt-to, как показано ниже:
<pattern-list group2> mail-from /^abc/ virtual-mta=mta1 mail-from /^xyz/ virtual-mta=mta2 rcpt-to /@yahoo.com$/ virtual-mta=mta3 </pattern-list>
В приведенных выше простых примерах вы можете видеть, что PowerMTA может использовать различные соответствия
шаблоны для разных кампаний, клиентов и / или рассылок одновременно, чтобы
используйте разные VirtualMTA или пулы VirtualMTA для каждого.
Допускается использование нескольких директив mail-from, rcpt-to и header.
определение <pattern-list>, и поскольку используется первое совпадение, вы захотите перечислить
скорее всего совпадет первым. В группе <source> допускается только один шаблонный список.
Условное соответствие также допускается. Например, если вы хотите, чтобы все письма
иметь MAIL FROM of X и RCPT TO Y, что допускается по схеме, аналогичной
следующие
<pattern-list patterns> mail-from /X/ <pattern-list> rcpt-to /Y/ virtual-mta=vmta2 rcpt-to /Z/ virtual-mta=vmta1 * virtual-mta=vmta2 </pattern-list> </pattern-list>
Для получения дополнительной информации об условном сопоставлении с образцом см. Раздел 3.2.16.
Обратите внимание, что поддерживается простое и расширенное сопоставление с шаблоном регулярного выражения
который основан на Perl-совместимых регулярных выражениях (PCRE).
8.4.3 Выбор VirtualMTA по IP
Адрес / Порт, Получающий Соединения
Для дополнительной гибкости PowerMTA поддерживает возможность выбора VirtualMTA на основе
IP-адрес (и номер порта TCP) на компьютере PowerMTA, к которому вы подключаетесь
при отправке ваших сообщений.
Например, если вы определили 10 VirtualMTA, каждый из которых имеет свой IP-адрес, вы
можно выбрать VirtualMTA для использования для каждого сообщения, просто сделав свой SMTP
подключение к определенному IP-адресу, определенному на вашем компьютере PowerMTA для
конкретный VirtualMTA.
Это достигается с помощью «именованных» тегов <source> в сочетании с директивой smtplistener. Именованные теги <source> позволяют вам указывать директивы, которые переопределяют
те, которые обычно выбираются по IP-адресу источника; они применяются только при условии ссылки в
Директива smtp-listener (и для аутентифицированных пользователей — см. Раздел 10.2.2).
Например, чтобы выбрать VirtualMTA vmta1 по назначенному адресу smtp-source-host
1.2.3.4 и стандартный порт SMTP (25), вы должны настроить:
<virtual-mta vmta1> smtp-source-host 1.2.3.4 vmta1.yourdomain.com ... </virtual-mta> <source vmta1> default-virtual-mta vmta1 </source> smtp-listener 1.2.3.4:25 source=vmta1
В файле конфигурации может быть указано несколько записей smtp-слушателя, каждая из которых указав другой IP-адрес и / или порт.
Обратите внимание, что если указаны какие-либо директивы smtp-listener, все слушатели должны быть явно определено: PowerMTA больше не запускает прослушиватель автоматически на основе значения
Директивы smtp-ip и smtp-port. При настройке вашей первой записи smtp-listener,
чтобы сохранить прослушиватель по умолчанию, вы должны добавить еще одну директиву smtp-listener, указав
твой smtp-ip и smtp-порт в нем. Если у вас не настроен smtp-ip, используйте 0.0.0.0
вместо этого, что заставляет PowerMTA связываться со всеми локальными IP-адресами:
smtp-listener 0.0.0.0:25
Поскольку директивы указанного источника применяются ко всем, кто может подключиться к IP слушателя
адрес и порт, нужно быть осторожным с тем, что там вводится. Например,
Всегда разрешать ретрансляцию, скорее всего, не следует включать в названном источнике.
Вместо этого следует разрешить пересылку, доступ к расширениям mailmerge и т. Д.
на основе аутентифицированных источников (см. раздел 10.2.2) или IP-адреса источника, как в
пример ниже:
<virtual-mta vmta1> smtp-source-host 1.2.3.4 vmta1.yourdomain.com ... </virtual-mta> smtp-listener 1.2.3.4:25 source=vmta1 smtp-listener 0.0.0.0:26 <source vmta1> default-virtual-mta vmta1 </source> <source 10.0.0.0/8> allow-mailmerge yes always-allow-relaying yes </source> <source 0/0> allow-mailmerge no always-allow-relaying no </source>
Выше VirtualMTA vmta1 выбран по умолчанию для любых сообщений, полученных через
1.2.3.4 на машине PowerMTA. Прослушиватель по умолчанию на 0.0.0.0:25 сохраняется
через собственную директиву smtp-listener. Разрешение на ретрансляцию и использование
Расширения mailmerge предоставляются для подключений из <source 10.0.0.0/8>,
подключаются ли они к 1.2.3.4 или нет.
Выбор VirtualMTA по исходному IP Адресу отправителя
- определите пулы VirtualMTA или VirtualMTA в файле конфигурации, используя
директива <virtual-mta>;
- определить конкретный IP-адрес или диапазон IP-адресов для источника сообщений
это применимо с использованием расширенной директивы <source>;
- определить VirtualMTA, который будет использоваться для сообщений через новый default-virtual-mta
директива внутри директивы <source>, определенной на шаге 2.
Например, предполагая, что у вас есть следующее определение VirtualMTA в вашем
конфигурационный файл:
<virtual-mta mta1> smtp-source-host 1.2.3.4 mta1.port25.com </virtual-mta>
и вы хотели использовать только почту с локального IP-адреса 127.0.0.1
VirtualMTA по умолчанию для каждого сообщения (без указания x-virtual-mta
заголовок в сообщениях), вы должны иметь как минимум следующее
конфигурационный файл;
<source 127.0.0.1> default-virtual-mta mta1 # выбирает VirtualMTA / пул по источнику сообщения always-allow-relaying yes # разрешить кормление с 127.0.0.1 </source>
При этом любые сообщения, отправленные с локального IP-адреса 127.0.0.1, будут иметь
PowerMTA, использующий VirtualMTA mta1 и его параметры при подключении к
доставить эти сообщения. Можно также выбрать пул VirtualMTA, который будет использоваться для сообщений
исходя из определенного IP-адреса, указав вместо этого имя пула VirtualMTA через
директива default-virtual-mta
Вы можете в основном определить столько разных IP-адресов источника или диапазонов IP-адресов для
сообщения в файле конфигурации, как вы хотите, каждый из которых использует разные VirtualMTA
или пул VirtualMTA.
Выбор VirtualMTA по IP-адресу VirtualMTA
Адрес
В дополнение к вышесказанному, VirtualMTA может быть привязан в зависимости от того, какой PowerMTA IP
используется для подключения, и соответствующий VirtualMTA, который настроен с этим
- IP. Чтобы использовать этот метод выбора, потребуется исходная директива default-virtual-mta.
для использования с настройкой «by-smtp-source-ip» вместо имени VirtualMTA.
При такой настройке для входящего SMTP-подключения PowerMTA будет использовать как
VirtualMTA по умолчанию, чей параметр «smtp-source-host» равен целевому IP
адрес на входящем соединении.
Пример:
<virtual-mta mta1> smtp-source-host 1.2.3.4 vmta1.port25.com </virtual-mta> <source 0/0> default-virtual-mta by-smtp-source-ip </source>
В приведенном выше примере подключение к IP-адресу 1.2.3.4 будет автоматически маршрутизировать
сообщение через VirtualMTA «mta1». Также при подключении с внешнего
отправив PowerMTA по почте, PowerMTA ответит именем хоста, настроенным в
VirtualMTA.
8.6 Настройка дополнительных IP-адресов
Прежде чем вы сможете назначить IP-адреса для VirtualMTA, они должны быть распознаны
операционная система. Обычно для каждого сетевого адаптера назначается один IP-адрес (сеть
Интерфейсная карта), также возможно определить дополнительные (псевдоним) IP-адреса к существующему
NIC.
В Windows 2000 вы добавляете псевдоним IP-адреса, открыв Панель управления, затем щелкнув правой кнопкой мыши «Подключение по локальной сети», открыв «Свойства», дважды щелкнув «Интернет».
Протокол », нажимая« Дополнительно »и, наконец, нажимая« Добавить … »в верхней половине« IP
Вкладка «Настройки». Для получения дополнительных IP-адресов, просто нажмите «Добавить …» несколько раз, предоставляя новый
IP-адреса. Изменения должны стать активными, как только вы нажмете «ОК»
закрыть окно свойств подключения по локальной сети.
В Red Hat Linux вы добавляете IP-адрес псевдонима, скопировав / etc / sysconfig / networkscripts / ifcfg-eth0 (подставив соответственно имя интерфейса, если оно не eth0), в
ifcfg-eth0: 1 (в том же каталоге), а затем отредактируйте файл, изменив DEVICE на eth0: 1
и IPADDR на новый IP. Если добавляемый IP-адрес находится не в той же подсети, что и
основной IP-адрес, возможно, вам также потребуется обновить NETMASK. Вы можете просто удалить
поля NETWORK и BROADCAST, если они есть, так как они автоматически вычисляются
система. Для получения дополнительных IP-адресов создайте дополнительные файлы с именем ifcfg-eth0: 2 и т. Д. Чтобы активировать
изменения, либо остановите и перезапустите интерфейс, либо просто перезагрузите систему.
В Solaris вы добавляете псевдоним IP-адреса, создавая файл с именем /etc/hostname.hme0:1
(подставив имя интерфейса, если оно не hme0) и введя нужный IP-адрес в
этот файл, возможно, следуя за ним с сетевой маской или другими параметрами, как требуется. Для большего количества IP-адресов,
создайте дополнительные файлы с именем hostname.hme0: 2 и т. д. Чтобы активировать изменения, перезагрузитесь
система.
Естественно, любые IP-адреса, которые вы добавляете, должны быть действительными в локальной сети, в которой находится ваша система.
прилагается. Пожалуйста, проконсультируйтесь с вашим сетевым администратором, если не уверены, какие IP-адреса
использовать.
Настройка конфигурации брандмауэра
Если PowerMTA работает на машине за брандмауэром, после того, как он настроен на использование
разные IP-адреса для каждого VirtualMTA, ваш брандмауэр будет видеть исходящее соединение
попытки с этих IP-адресов. Возможно, вам придется настроить конфигурацию брандмауэра
соответственно.
8.7 Предварительные условия DNS
Многие интернет-провайдеры проверяют имя хоста и IP-адреса источника, используемые во входящем SMTP
соединения с информацией в DNS, чтобы помочь определить законность. Потому что
поэтому крайне важно, чтобы у вас был настроен DNS в соответствии с вашим использованием
VirtualMTAs.
Изменения в определениях VirtualMTA можно применять с помощью команды pmta reload, не требуют перезагрузки.