Eu tenho uma caixa CentOS executando exim, estou tentando restringir e-mails de saída apenas para um domínio (digamos domínio.com) e bloquear e-mails para todos os outros domínios. Eu adicionei regras específicas para permitir e-mails de saída para domain.com (números de linha 6,7 e 8) e a ação padrão para a cadeia de saída é bloquear. Mas ainda assim os e-mails são enviados para Gmail, Yahoo e outros domínios. O que há de errado nas minhas regras do iptables?
Abaixo estão as regras de saída
root@host1 [/tmp/logd]# /sbin/iptables -L OUTPUT -n --line-number -v
Chain OUTPUT (policy DROP 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 0 0 ACCEPT tcp -- * * 0.0.0.0/0 192.x.x.x /* test */
2 3455 420K ACCEPT tcp -- * * 0.0.0.0/0 23.x.x.x tcp dpt:443
3 0 0 ACCEPT tcp -- * * 0.0.0.0/0 104.x.x.x tcp dpt:80
4 0 0 ACCEPT tcp -- * * 0.0.0.0/0 104.x.x.x tcp dpt:80
5 0 0 ACCEPT tcp -- * * 0.0.0.0/0 104.20.5.21 tcp dpt:80 /* www.spamhaus.org */
6 0 0 ACCEPT tcp -- * * 0.0.0.0/0 216.x.x.x tcp dpt:25 /* allow mails to domain.com */
7 69 16484 ACCEPT tcp -- * * 0.0.0.0/0 216.x.x.x tcp dpt:25 /* allow mails to domain.com */
8 68 10803 ACCEPT tcp -- * * 0.0.0.0/0 173.x.x.x tcp dpt:25 /* allow mails to domain.com */
9 800K 826M LOCALOUTPUT all -- * !lo 0.0.0.0/0 0.0.0.0/0
10 0 0 ACCEPT tcp -- * !lo 0.0.0.0/0 0.0.0.0/0 tcp dpt:53
11 0 0 ACCEPT udp -- * !lo 0.0.0.0/0 0.0.0.0/0 udp dpt:53
12 9 536 ACCEPT tcp -- * !lo 0.0.0.0/0 0.0.0.0/0 tcp spt:53
13 2147 313K ACCEPT udp -- * !lo 0.0.0.0/0 0.0.0.0/0 udp spt:53
14 11324 17M ACCEPT all -- * lo 0.0.0.0/0 0.0.0.0/0
15 797K 826M INVALID tcp -- * !lo 0.0.0.0/0 0.0.0.0/0
16 797K 826M ACCEPT all -- * !lo 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
17 0 0 ACCEPT icmp -- * !lo 0.0.0.0/0 0.0.0.0/0 icmp type 0
18 0 0 ACCEPT icmp -- * !lo 0.0.0.0/0 0.0.0.0/0 icmp type 8
29 0 0 ACCEPT icmp -- * !lo 0.0.0.0/0 0.0.0.0/0 icmp type 11
20 0 0 ACCEPT icmp -- * !lo 0.0.0.0/0 0.0.0.0/0 icmp type 3
21 372 25376 LOGDROPOUT all -- * !lo 0.0.0.0/0 0.0.0.0/0
Responder1
Não sei se você também tem IPv6 nesta caixa? Nesse caso, o exim tentará enviar por IPv6 por padrão, antes de voltar para IPv4. Mas acho que o problema aqui não é o iptables em si, mas a forma como esses domínios são tratados e consultados. É quase impossível filtrar com base no endereço IP, pois as empresas maiores têm vários truques de roteamento e BGP para diminuir a latência e como o tráfego é roteado para seus domínios.
Em vez disso, sugiro que você configure o exim4 para enviar e-mails apenas para seus domínios de saída permitidos e, em seguida, passe para qualquer outro lugar, talvez algo como isto:Bloqueando e-mails enviados para alguns usuários no exim
Responder2
Acho que sua ideia geral de como fazer isso está errada. Esses assuntos normalmente enchem livros, mas tentarei explicar brevemente:
Você provavelmente presume que o servidor de e-mail domain.com
está no mesmo endereço IP que domain.com
ele. Embora isso acidentalmente possa ser verdade em alguns (ou mesmo em muitos) casos, não é verdade em geral.
Em vez disso, existem entradas nos registros DNS de um domínio que determinam qual servidor (endereço IP) trata o correio do domínio. Você já deve ter visto registros DNS como este:
domain.com. 1H MX 50 mail.domain.com
domain.com. 1H IN A 2.3.4.5
mail.domain.com 1H IN A 1.2.3.4
Isso significa que o servidor de e-mail (por exemplo, mail.domain.com
) domain.com
pode estar em um endereço IP diferente domain.com
dele.
Agora, se você enviar e-mail do seu programa de software de e-mail (também chamado de MUA - mail user agent), o MUA entrega a mensagem ao Exim. Quando o Exim tenta retransmitir a mensagem para o destinatário, ele primeiro procura o servidor de e-mail que tratará o e-mail do domínio do destinatário e, em seguida, tenta se conectar a esse servidor e entregar a mensagem lá.
Isso significa queseu método pode até impedir que você enviequalquere-mail.Suponha domain.com
que resolva para 1.1.1.1
, mas o servidor de e-mail domain.com
esteja em (ou resolva) para 2.2.2.2
. Como seu firewall permite a passagem de tráfego apenas para 1.1.1.1
, você não pode enviar nenhum e-mail nem para domain.com
, porque o e-mail para domain.com
teria que ser entregue para 2.2.2.2
.
Este é apenas um dos vários motivos pelos quais você não deve usar o firewall para atingir seu objetivo. Como disse @Fredrik Lundhag, você deve configurar o Exim adequadamente.