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

Как отправить электронную почту через определенный IP-адрес?

У нас есть 3 IP, подключенных к одному интерфейсу. Я бы хотел, чтобы трафик электронной почты шел через определенный IP-адрес, который не является IP-адресом по умолчанию. (Это потому, что Spamhaus продолжает блокировать нас, поэтому я хочу отделить трафик электронной почты, например, от исходящего трафика Wi-Fi.)

Существующий блок правил iptables выглядит так:

#Email
/sbin/iptables -A FORWARD -j ACCEPT -p tcp --dport 25
/sbin/iptables -t nat -A PREROUTING -i enp3s0 -p tcp --dport 25 -j DNAT --to [server's LAN IP]:25
/sbin/iptables -A FORWARD -j ACCEPT -p tcp --dport 110
/sbin/iptables -t nat -A PREROUTING -i enp3s0 -p tcp --dport 110 -j DNAT --to [server's LAN IP]:110
/sbin/iptables -A FORWARD -j ACCEPT -p tcp --dport 143
/sbin/iptables -t nat -A PREROUTING -i enp3s0 -p tcp --dport 143 -j DNAT --to [server's LAN IP]:143

enp3s0 это внешний сетевой адаптер, внутренний сетевой адаптер enp6s0 если это имеет значение.

Что я могу добавить / изменить, чтобы исходящий трафик проходил через IP-адрес, отличный от заданного по умолчанию?

Вы можете использовать либо iptables и измените IP-адрес источника в POSTROUTING цепочка nat table или используйте расширенную маршрутизацию с ip rule и создайте дополнительную таблицу маршрутизации, в которой вы установите адрес для src атрибут.

iptables

/sbin/iptables -t nat -A POSTROUTING \
    -o "$wan_if" -p tcp --dport 25 -j SNAT --to-source "$mail_ip"

политика маршрутизации

# just once
echo '25    smtp' >>/etc/iproute2/rt_tables

# after each boot
ip route add "$next_hop_network" dev "$wan_if"
ip route add default via "$next_hop" src "$mail_ip" table smtp
ip rule add prio 100 ipproto tcp dport 25 lookup smtp