Есть два способа исправить это:
Добавить сопоставления для всех виртуальных доменов в / etc / postfix / virtual
. Postfix примет сообщение, если какая-либо запись в этом файле совпадает.
Установка virtual_alias_domains
в список других доменов, для которых вы хотите получать почту. Затем вы можете использовать таблицу регулярных выражений virtual_alias_maps = pcre: /etc/postfix/virtual.pcre
, где последний содержит что-то вроде /.*/ info
.
Осторожно: это не проверено.
Вот цели и средства ретранслятора (, т.е. relay1
, relay2
или relay3
), для правильной обработки трафика, поступающего как через default-gateway
(10.0.0.1
), так и через HAProxymaster-relay
(10.0.0.254
)в прозрачном режиме, действуя как шлюз:
Ретранслятор должен использовать обычный шлюз default-gateway
для нормального трафика, то есть:
default-gateway
. Ретранслятор должен использовать альтернативный шлюз master-relay
для прозрачно ретранслируемого трафика HAProxy, то есть только для:
master-relay
, действующий в качестве альтернативного шлюза. Селектор для различения случая маршрутизации 1. от случая 2. является MAC-адресом источника альтернативного шлюза master-relay
. Скажем 02:03:04:05:06:07
.
Выбор, однажды сделанный в первом пакете соединения, должен оставаться тем же самым для всех других пакетов, входящих в это соединение.
Для этого требуется маршрутизация на основе политик с альтернативной таблицей маршрутизации (ip route add table...
, дополнительное решение о маршрутизации (ip rule add fwmark...
), основанное на iptables
использовании модуля соответствияmac
для селектора MAC-адресов, цельMARK
для изменения решение о маршрутизации и цельCONNMARK
запомнить решение для всего соединения.
Случай 1. является случаем по умолчанию без специальной обработки, а случай 2. является исключением, вам следует отменить изменение маршрутизации, чтобы использовать default-gateway
в качестве шлюза по умолчанию, как обычно:
ip route replace default via 10.0.0.1
Случай 2. будет сохранен в альтернативной таблице маршрутизации. Не надо его называть, любой номер подойдет, давайте выберем1000254
(254
был зарезервирован, это главная таблица...):
ip route add table 1000254 default via 10.0.0.254
Решение о маршрутизации будет инициировано значением метки (, поступающим от iptables
цели MARK
). Давайте выберем254
:
ip rule add fwmark 254 lookup 1000254
Как видно из Поток пакетов в Netfilter и общей сети ,правило iptables
в mangle/PREROUTING
или mangle/OUTPUT
может установить метку перед выполнением решения о маршрутизации (или проверки перемаршрута ). Вот так в итоге iptables
изменит маршрут. Таким образом, для одного входящего пакета это будет:
iptables -t mangle -A PREROUTING -m mac --mac-source 02:03:04:05:06:07 -j MARK --set-mark 254
Теперь, чтобы запомнить его для всего соединения, его следует обернуть вызовами CONNMARK
, которые сохраняют и извлекают метку в записи conntrack для этого потока и позволяют установить ее только в первый раз, не забывая направление OUTPUT. Некоторые пояснения есть в этом блоге:Для Linux и не только! Сетевой фильтр Connmark . Нет необходимости помечать пакеты для трафика локальной сети, поэтому отфильтруйте их (, и это может помочь при использовании conntrack -L
, см. в конце ). В итоге, включая предыдущее правило, получается:
iptables -t mangle -A PREROUTING -j CONNMARK --restore-mark
iptables -t mangle -A PREROUTING -m mark ! --mark 0 -j RETURN
iptables -t mangle -A PREROUTING ! -s 10.0.0.0/24 -m mac --mac-source 02:03:04:05:06:07 -j MARK --set-mark 254
iptables -t mangle -A PREROUTING -j CONNMARK --save-mark
iptables -t mangle -A OUTPUT -j CONNMARK --restore-mark
Вот именно. В этом случае даже не требуется переводrp_filter
в свободный режим, поскольку задействован только один сетевой интерфейс.
Обратите внимание, что вы можете легко вставить больше таблиц, правил и меток, чтобы иметь более одной master-relay
, если вам нужна избыточность (или просто добавить дополнительный MAC-адрес к master-relay
, если его IP-адрес может изменить свой MAC-адрес. адрес по любой причине ). Пример дополнительного HAProxy с IP 10.0.0.250
и MAC0A:09:08:07:06:05
:
ip route add table 1000250 default via 10.0.0.250
ip rule add fwmark 250 lookup 1000250
iptables -t mangle -I PREROUTING 4 ! -s 10.0.0.0/24 -m mac --mac-source 0A:09:08:07:06:05 -j MARK --set-mark 250
conntrack -L
будет отображать метку соединения и, таким образом, может использоваться для определения того, произошло ли соединение через master-relay
вместо значения по умолчанию, потому что его метка будет 254
вместо 0
:
# conntrack -L -s 198.51.100.1
tcp 6 431635 ESTABLISHED src=198.51.100.1 dst=10.0.0.10 sport=50230 dport=25 src=10.0.0.10 dst=198.51.100.1 sport=25 dport=50230 [ASSURED] mark=0 secctx=system_u:object_r:unlabeled_t:s0 use=1
tcp 6 431527 ESTABLISHED src=198.51.100.1 dst=10.0.0.10 sport=49554 dport=25 src=10.0.0.10 dst=198.51.100.1 sport=25 dport=49554 [ASSURED] mark=254 secctx=system_u:object_r:unlabeled_t:s0 use=1
conntrack v1.4.4 (conntrack-tools): 2 flow entries have been shown.