Linux

Exim4 配置使用多個外部 ip 進行郵件發送

  • January 21, 2020

我在 ubuntu 伺服器上有 exim4,並且我有一個包含 20 個外部 IP 的池。

是否可以將 exim4 配置為使用此 ip-s 旋轉發送郵件?


我想我可以通過 iproute / iptables 負載平衡和“連結棒”來做到這一點,但我想知道這是否可以通過 exim4 內部配置來實現。也許我應該創建幾個外部 smtp_drivers 將使用 20 個 IP 和一些 random() 函式之一?

我發現這篇文章展示瞭如何設置一個隨機函式以從列表中選擇一個 IP,然後將其分配為 smtp 驅動程序的輸出介面。

本質上,您必須設置一個功能:

sub randinet {
 @inet = ("x.x.x.1", "x.x.x.2", "x.x.x.3", "x.x.x.4");
 return $inet[int rand($#inet+1)];
}

並修改 smtp 驅動程序:

remote_smtp:
driver = smtp
interface = "${perl{randinet}}"

您也可以在 exim 中執行此操作,而無需使用 perl:

創建一個查找文件 /etc/exim/ips.txt

1: xxx.xxx.xxx.1
2: xxx.xxx.xxx.2
3: xxx.xxx.xxx.3
4: xxx.xxx.xxx.4

將傳輸設置為:

remote_smtp:
 driver = smtp
 interface = "${lookup {${randint:5}} lsearch {/etc/exim/ips.txt}}"

randint 將返回 1-4 之間的隨機數,然後在文件中查找並使用,如果您有更多 ip 只需添加到列表中並將 randint 值增加到數字 ips + 1

可以由那些在沒有 perl 的情況下建構 exim 的人使用,或者只是不想使用 perl 將所有內容保存在 exim 中。

引用自:https://serverfault.com/questions/355313