Você pode usar a opção -d
para as regras de iptables, o que faz a regra funcionar apenas para o endereço fornecido e, em seguida, bloquear todo o resto.
iptables -I OUTPUT -p tcp --dport 587 -j DROP
iptables -I OUTPUT -d smtp.gmail.com -p tcp -m tcp --dport 587 -j ACCEPT
deve fazer o que quiser. Isso inicialmente insere um DROP em todas as conexões de saída na porta 587 para o início da cadeia OUTPUT. Em seguida, insere uma regra de permissão para a porta smtp.gmail.com 587 no início da cadeia OUTPUT. Isso tem o efeito de permitir conexões para smtp.gmail.com:587 e bloquear todo o resto na porta 587, por exemplo,
iptables -L OUTPUT -n
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 173.194.66.109 tcp dpt:587
ACCEPT tcp -- 0.0.0.0/0 173.194.66.108 tcp dpt:587
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:587
Observe que smtp.gmail.com resolve dois endereços IP e é por isso que existem duas regras ACCEPT acima. O nome só é resolvido uma vez quando a regra é adicionada ao kernel, portanto, se os endereços forem alterados, as conexões para o gmail também serão bloqueadas e você precisará recarregar as regras.