Como configurar um servidor de e-mail Ubuntu que aceita qualquer e-mail de *@*.ca e encaminha-os para um endereço de e-mail externo?

1

Estou tentando configurar um pequeno servidor Ubuntu que aceitaria basicamente qualquer e-mail e encaminharia todos eles para o endereço de e-mail de minha escolha.
Eu fiz alguma pesquisa e acho que seria possível fazer com postfix , mas eu realmente não estou familiarizado com isso.

Alguém pode me fornecer uma explicação detalhada de como eu faria isso? Estou começando do zero de um novo servidor Ubuntu, tentei adicionar isso ao main.cf de postfix , mas não está funcionando.

luser_relay = [email protected] 
local_recipient_maps =

O objetivo final é que eu crie um registro MX apontando para o meu servidor para todos os meus domínios que eu uso e os e-mails começariam a fluir (temporariamente). Eu entendo os riscos de segurança e o problema de spam.

Obrigado pela ajuda

PS: estou aberto a outras formas de fazer isso , se alguém souber de alguma aplicação ou a maneira mais fácil de fazer isso, funcionará para mim.

    
por Delbane 04.06.2017 / 00:44

1 resposta

0

Esta resposta não aceita mensagens para todo o TLD "ca". Isso porque descobri que os domínios curinga na tabela VirtUser exigem a correção de um arquivo m4.

Esta resposta fornece uma maneira de obter uma lista de domínios .ca e reescrever o destinatário para um endereço externo.

Instale o Sendmail, inicie-o.

apt-get install sendmail
service sendmail start

Fazendo a listagem do sendmail em todos os adaptadores

Por padrão, o sendmail irá escutar no host local (127.0.0.1). Precisamos editar o sendmail.mc para fazê-lo escutar em todos os IPs.

vim /etc/mail/sendmail.mc

Alterar:

DAEMON_OPTIONS('Family=inet,  Name=MTA-v4, Port=smtp, Addr=127.0.0.1')dnl

... Para ...

DAEMON_OPTIONS('Family=inet,  Name=MTA-v4, Port=smtp, Addr=0.0.0.0')dnl

... então construa o arquivo sendmail.cf:

m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

... então reinicie o sendmail:

service sendmail restart

Agora precisamos confirmar que o sendmail está escutando em todos os adaptadores. Use netstat, você deve obter algo assim:

netstat -tpln
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
...
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      6104/sendmail: MTA:
...

Fazendo o e-mail do RELAY do sendmail para o TLD "ca":

Precisamos editar o arquivo "access" para dizer ao sendmail para aceitar e-mails para o TLD "ca".

vim /etc/mail/access

Adicione isso em qualquer lugar próximo a outras instruções "RELAY". Isso faz com que o sendmail aceite qualquer email com um endereço de destinatário '* .ca'.

To:ca                   RELAY

Salvar e sair ...

Em seguida, use o makemap para criar o arquivo de mapeamento access.db:

makemap hash /etc/mail/access < /etc/mail/access

Reinicie o sendmail:

service sendmail restart

Testando a instrução RELAY com o telnet do servidor externo:

De um servidor externo, use o telnet para testar manualmente um destinatário "* .ca":

telnet your_mail.server 25

Aqui estão os comandos que eu digitei na sessão de telnet:

helo testing.com
mail from: [email protected]
rcpt to: [email protected]
quit

Aqui está uma amostra de como a saída deve ser:

root@zim:~# telnet dib.ttucker.net 25
Trying 52.43.174.20...
Connected to dib.ttucker.net.
Escape character is '^]'.
220 localhost ESMTP Sendmail 8.15.2/8.15.2/Debian-3; Mon, 5 Jun 2017 04:36:55 GMT; (No UCE/UBE) logging access from: [23.227.163.72](FORGED)-billing.bizzhost.com [23.227.163.72] (may be forged)
helo testing.com
250 localhost Hello billing.bizzhost.com [23.227.163.72] (may be forged), pleased to meet you
mail from: [email protected]
250 2.1.0 [email protected]... Sender ok
rcpt to: [email protected]
250 2.1.5 [email protected]... Recipient ok
quit
221 2.0.0 localhost closing connection
Connection closed by foreign host.

Se você ver isso:

rcpt to: [email protected]
550 5.7.1 [email protected]... Relaying denied. IP name possibly forged [23.227.163.72]

... então algo não está funcionando ...

Configurado virtusertable e virtuser-domains

Para reescrever o destinatário de qualquer e-mail recebido para nossos domínios .ca, estamos usando o virtusertable.

Primeiro editamos o sendmail.mc novamente para ativar alguns recursos:

vim /etc/mail/sendmail.mc

Encontre a linha:

FEATURE('access_db', , 'skip')dnl'

... e adicione as seguintes linhas depois ...

FEATURE('virtusertable')dnl
VIRTUSER_DOMAIN_FILE('/etc/mail/virtuser-domains')dnl
FEATURE('virtuser_entire_domain')dnl

Observação: a sintaxe FEATURE () começa com um backtick e termina com uma aspa simples

... salve e saia ...

Compile o arquivo de configuração:

m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

Adicionando um domínio ao arquivo virtuser-domains:

Precisamos dizer ao sendmail para quais domínios ele deve procurar a tabela virt user. Como o sendmail faz a melhor correspondência da mão esquerda no domínio, podemos colocar apenas o TLD "ca" aqui ...

vim /etc/mail/virtuser-domains

... adicione o domínio "ca":

ca

... (sim, o arquivo contém apenas "ca") ... salve e saia

Adicionando as reescritas à tabela dos virtusers:

Em seguida, precisamos informar ao sendmail o que reescrever para fazer. Nós adicionamos estes ao virtusertable. Como dito acima, você precisará adicionar cada domínio a esse arquivo manualmente ou com um script.

vim /etc/mail/virtusertable

... adicione seus domínios:

@derp.ca         [email protected]
@another.ca      [email protected]
@sendmail.ca     [email protected]

... salve e saia ...

Agora precisamos fazer o makemap novamente:

makemap hash /etc/mail/virtusertable < /etc/mail/virtusertable

Nota: você deve ter um arquivo /etc/mail/virtusertable.db agora

... reinicie o sendmail:

service sendmail restart

Testando a reescrita com o sendmail -bv

Você pode usar o sendmail no servidor para testar se as regras virtuertáveis estão funcionando conforme o esperado:

root@dib:/etc/mail# sendmail -bv [email protected]
[email protected]... deliverable: mailer esmtp, host gmail.com., user [email protected]

Testando um email real:

Em um servidor externo, execute o telnet novamente:

telnet your_email.server 25

... depois que o banner voltar, copie e cole o seguinte:

helo testing.com
mail from: [email protected]
rcpt to: [email protected]
data
subject: This is a test
from: [email protected]
to: [email protected]

Hello Self,

This is a test.

Regards,
.
quit

Todos juntos, devem ficar assim:

root@zim:~# telnet dib.ttucker.net 25
Trying 52.43.174.20...
Connected to dib.ttucker.net.
Escape character is '^]'.
220 dib.ttucker.net ESMTP Sendmail 8.15.2/8.15.2/Debian-3; Mon, 5 Jun 2017 06:28:46 GMT; (No UCE/UBE) logging access from: [23.227.163.72](FORGED)-billing.bizzhost.com [23.227.163.72] (may be forged)
helo testing.com
mail from: [email protected]
rcpt to: [email protected]
data
subject: This is a test
from: [email protected]
to: [email protected]

Hello Self,

This is a test.

Regards,
.
quit250 dib.ttucker.net Hello billing.bizzhost.com [23.227.163.72] (may be forged), pleased to meet you
250 2.1.0 [email protected]... Sender ok
250 2.1.5 [email protected]... Recipient ok
354 Enter mail, end with "." on a line by itself
250 2.1.0 [email protected]... Sender ok
250 2.1.5 [email protected]... Recipient ok
354 Enter mail, end with "." on a line by itself
250 2.0.0 v556SkbP009313 Message accepted for delivery
250 2.1.0 [email protected]... Sender ok
250 2.1.5 [email protected]... Recipient ok
354 Enter mail, end with "." on a line by itself

221 2.0.0 dib.ttucker.net closing connection
Connection closed by foreign host.

Depois de pensar:

Você também pode querer aumentar o nível de log do sendmail porque o nível de log padrão não é muito detalhado.

Adicione o seguinte ao sendmail.mc, faça a compilação e reinicie:

define('confLOG_LEVEL', '14')dnl

Google "cinza listado" me muito rapidamente ... eu acho que ...

Então, meu primeiro teste de e-mail passou e foi colocado em spam. Depois de cada teste, recebo um código 4xx (deferimento) dos servidores do Gmail. Isso faz sentido, já que isso parece com coisas horríveis de spam ...

O correio acabou por passar, mas demorou alguns minutos. A emissão de códigos 4xx é uma maneira que os servidores de correio usam para enviar spam em "limitar a taxa" procurando servidores.

Você provavelmente desejará configurar regras de lista de permissões no servidor de recebimento, pois esses e-mails, já que eles parecerão com spam.

Como isso é nos logs do sendmail:

Note que isso é com o nível de registro "20" porque mostra a mensagem bloqueada e eu estava solucionando problemas:

root@dib:/etc/mail# grep v556cKKt010016 /var/log/mail.log
Jun  5 06:38:20 dib sm-mta[10016]: v556cKKt010016: Milter: no active filter
Jun  5 06:38:21 dib sm-mta[10016]: v556cKKt010016: --- 220 dib.ttucker.net ESMTP Sendmail 8.15.2/8.15.2/Debian-3; Mon, 5 Jun 2017 06:38:20 GMT; (No UCE/UBE) logging access from: [23.227.163.72](FORGED)-billing.bizzhost.com [23.227.163.72] (may be forged)
Jun  5 06:38:25 dib sm-mta[10016]: v556cKKt010016: <-- helo testing.com
Jun  5 06:38:25 dib sm-mta[10016]: v556cKKt010016: --- 250 dib.ttucker.net Hello billing.bizzhost.com [23.227.163.72] (may be forged), pleased to meet you
Jun  5 06:38:25 dib sm-mta[10016]: v556cKKt010016: <-- mail from: [email protected]
Jun  5 06:38:25 dib sm-mta[10016]: v556cKKt010016: --- 250 2.1.0 [email protected]... Sender ok
Jun  5 06:38:25 dib sm-mta[10016]: v556cKKt010016: <-- rcpt to: [email protected]
Jun  5 06:38:25 dib sm-mta[10016]: v556cKKt010016: --- 250 2.1.5 [email protected]... Recipient ok
Jun  5 06:38:25 dib sm-mta[10016]: v556cKKt010016: <-- data
Jun  5 06:38:25 dib sm-mta[10016]: v556cKKt010016: --- 354 Enter mail, end with "." on a line by itself
Jun  5 06:38:25 dib sm-mta[10016]: v556cKKt010016: [email protected], size=110, class=0, nrcpts=1, msgid=<[email protected]>, proto=SMTP, daemon=MTA-v4, relay=billing.bizzhost.com [23.227.163.72] (may be forged)
Jun  5 06:38:25 dib sm-mta[10016]: v556cKKt010016: --- 250 2.0.0 v556cKKt010016 Message accepted for delivery
Jun  5 06:38:25 dib sm-mta[10020]: v556cKKt010016: makeconnection (gmail-smtp-in.l.google.com. [IPv6:2607:f8b0:400e:c04:0:0:0:1a]) failed: Network is unreachable
Jun  5 06:40:25 dib sm-mta[10020]: v556cKKt010016: makeconnection (gmail-smtp-in.l.google.com. [173.194.202.26]) failed: Connection timed out with gmail-smtp-in.l.google.com.
Jun  5 06:40:26 dib sm-mta[10020]: v556cKKt010016: makeconnection (alt1.gmail-smtp-in.l.google.com. [IPv6:2607:f8b0:4001:c1a:0:0:0:1b]) failed: Network is unreachable
Jun  5 06:42:26 dib sm-mta[10020]: v556cKKt010016: makeconnection (alt1.gmail-smtp-in.l.google.com. [173.194.196.26]) failed: Connection timed out with alt1.gmail-smtp-in.l.google.com.
Jun  5 06:42:26 dib sm-mta[10020]: v556cKKt010016: makeconnection (alt2.gmail-smtp-in.l.google.com. [IPv6:2607:f8b0:4002:c03:0:0:0:1b]) failed: Network is unreachable
Jun  5 06:44:26 dib sm-mta[10020]: v556cKKt010016: makeconnection (alt2.gmail-smtp-in.l.google.com. [173.194.219.27]) failed: Connection timed out with alt2.gmail-smtp-in.l.google.com.
Jun  5 06:44:26 dib sm-mta[10020]: v556cKKt010016: makeconnection (alt3.gmail-smtp-in.l.google.com. [IPv6:2607:f8b0:400d:c0c:0:0:0:1a]) failed: Network is unreachable
Jun  5 06:44:26 dib sm-mta[10020]: v556cKKt010016: SMTP outgoing connect on ip-172-31-42-65.us-west-2.compute.intern
Jun  5 06:44:27 dib sm-mta[10020]: v556cKKt010016: [email protected], delay=00:06:02, xdelay=00:06:02, mailer=esmtp, pri=120110, relay=alt3.gmail-smtp-in.l.google.com. [173.194.68.26], dsn=2.0.0, stat=Sent (OK 1496645067 v28si8540518qth.285 - gsmtp)
Jun  5 06:44:27 dib sm-mta[10020]: v556cKKt010016: done; delay=00:06:02, ntries=1
    
por 05.06.2017 / 08:49