Com o Postfix 2.7 ou posterior, é muito fácil.
Primeiro, crie uma entrada para cada IP no master.cf, desta forma:
out1 unix - - n - - smtp
-o syslog_name=postfix-out1
-o smtp_helo_name=out1.yourdomain.tld
-o smtp_bind_address=a.b.c.1
out2 unix - - n - - smtp
-o syslog_name=postfix-out2
-o smtp_helo_name=out2.yourdomain.tld
-o smtp_bind_address=a.b.c.2
[...]
outN unix - - n - - smtp
-o syslog_name=postfix-outN
-o smtp_helo_name=outN.yourdomain.tld
-o smtp_bind_address=a.b.c.N
Em seguida, crie um mapa de transporte dependente do remetente em main.cf, desta forma:
sender_dependent_default_transport_maps = mysql:/etc/postfix/config/transport_roundrobin.cf
Comente todos os outros transport_maps em main.cf, assim:
#transport_maps = ...
Agora aqui está o truque, esta tabela de transporte estará usando RAND () para randomizar o uso de todos os transportes de saída [1..n] listados em master.cf.
Em /etc/postfix/config/transport_roundrobin.cf escreva:
user = dbuser
password = dbpass
dbname = dbname
hosts = dbhost
query = SELECT transport FROM transport_roundrobin ORDER BY RAND() LIMIT 1
Por fim, crie uma tabela chamada 'transport_roundrobin' no db 'dbname' em execução no 'dbhost' e insira uma linha para cada transporte:
CREATE TABLE transport_roundrobin (transport varchar(40) not null)
INSERT INTO transport_roundrobin (transport) VALUES ('out1');
INSERT INTO transport_roundrobin (transport) VALUES ('out2');
[...]
INSERT INTO transport_roundrobin (transport) VALUES ('outN');
O postfix selecionará uma linha aleatória da tabela mysql transport_roundrobin e, em seguida, usará o valor obtido para selecionar o transporte correspondente em master.cf.
Cada transporte usará um endereço IP diferente, de acordo com o -o smtp_bind_address