У меня есть exim4 на сервере Ubuntu, и у меня есть пул из 20 внешних IP-адресов.
Можно ли настроить exim4 для использования ротации IP-адресов для отправки почты?
Я думаю, что смогу сделать это с помощью балансировки нагрузки iproute / iptables с помощью «привязки», но я хочу знать, возможно ли это с внутренней конфигурацией exim4. Может быть, мне стоит создать несколько внешних smtp_drivers, которые будут использовать один из 20 IP и какую-то функцию random ()?
Вы также можете сделать это из 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
Может использоваться теми, кто создал exim без Perl или просто не хочет использовать Perl, сохраняя все внутри exim.
я нашел Эта статья которые показывают, как настроить случайный функция, чтобы выбрать 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}}"
Вот очень простой способ
Создайте /etc/exim.pl
со следующим содержанием:
use feature qw[state];
sub randomhosts {
state $current;
my @inet = (
"x.x.x.x:hostname1.domain.com",
"x.x.x.x:hostname2.domain.com",
"x.x.x.x:hostname3.domain.com"
);
if ($_[0] eq 'generate') {
shift;
@{$current}{qw[ip host]} = split /:/, $inet[rand @inet];
}
return $current->{$_[0]};
}
Заменить x.x.x.x
с IP и именем хоста (после двоеточия, которое будет использоваться как HELO).
Теперь добавьте это в начало вашего exim.conf
perl_startup = do '/etc/exim.pl'
Теперь под remote_smtp:
раздел добавить это
interface = "${perl{randomhosts}{generate}{ip}}"
helo_data = "${perl{randomhosts}{host}}"
Вот и все. Теперь электронные письма будут случайным образом проходить через все IP-адреса, которые вы добавили в Perl-скрипт, и будут использовать действительные HELO.
Вы получите следующую ошибку, если последуете подходу topdog.
есть два транспорта с именем "remote_smtp"
так как вы не можете изменить секцию STARTTRANSPORT в редакторе exim conf.
Даже если вы попытаетесь изменить exim.conf вручную, он будет удален и заменен файлом по умолчанию при перезапуске.
Единственное решение, которое я смог найти в Интернете, было http://forums.cpanel.net/f43/scripts-posteximup-help-205971.html#post845302
Я также разместил заявку на cPanel. посмотрим, как они отреагируют. Постараюсь обновить его, как только получу ответ.