Linux
Exim4 配置使用多個外部 ip 進行郵件發送
我在 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 中。