Sendmail: catchall para todos os domínios

2

Eu preciso configurar uma configuração de servidor de email para um ambiente de teste que aceite todos os emails (ou seja, para todos os usuários e todos os domínios, inclusive os não locais) e coloque-os em uma única caixa de correio local.

O que eu tenho é o SLES 11 com Sendmail (8.14) onde eu tentei modificar o / etc / mail / virtusertable para parecer

@ catchall

ou como

@* catchall

mas sem sucesso - os endereços de e-mail de destino (por exemplo, "[email protected]" ) não são reescritos para catchall @ , então a entrega é tentada no MX apropriado :

# sendmail -bt
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
> 3,0 [email protected]
canonify           input: santa @ northpole . org
Canonify2          input: santa < @ northpole . org >
Canonify2        returns: santa < @ northpole . org . >
canonify         returns: santa < @ northpole . org . >
parse              input: santa < @ northpole . org . >
Parse0             input: santa < @ northpole . org . >
Parse0           returns: santa < @ northpole . org . >
ParseLocal         input: santa < @ northpole . org . >
ParseLocal       returns: santa < @ northpole . org . >
Parse1             input: santa < @ northpole . org . >
MailerToTriple     input: < > santa < @ northpole . org . >
MailerToTriple   returns: santa < @ northpole . org . >
Parse1           returns: $# esmtp $@ northpole . org . $: santa < @ northpole . org . >
parse            returns: $# esmtp $@ northpole . org . $: santa < @ northpole . org . >

Parece que não há suporte para curingas na parte do domínio de origem da tabela de pesquisa.

Como eu implementaria isso com o Sendmail?

Editar: Conforme Comentários de Andrzej Eu tentei uma entrada de mailertable de

. local:catch-all-outgoing

bem como

.. local:catch-all-outgoing

e recebeu uma saída idêntica para sendmail -bv em ambos os casos:

# sendmail -d60.5 -bv [email protected]
map_lookup(dequote, root, %0=root) => NOT FOUND (0)
map_lookup(host, example.net, %0=example.net) => example.net. (0)
[email protected]... deliverable: mailer esmtp, host example.net., user [email protected]

( sim, raiz, como sendmail parece incapaz de executar como não-raiz )

Editar: aconteceu, o recurso mailertable não foi habilitado no arquivo de macro, portanto o sendmail.cf não continha as regras de reescrita apropriadas para que ele funcionasse.

    
por the-wabbit 11.09.2013 / 17:08

2 respostas

2

O que você está enfrentando aqui: /etc/mail/virtusertable Acredito que seja limitado apenas ao e-mail de entrada, não à saída.

You can use default route in mailertable or SMART_HOST to deliver all non local messages to one local mailbox/alias.

mailertable entry:
. local:catch-all-outgoing

aliases:
catch-all-outgoing: some-local-account

Any LHS entry that does not begin with a dot matches the full host name indicated. LHS entries beginning with a dot match anything ending with that domain name (including the leading dot) -- that is, they can be thought of as having a leading ".+" regular expression pattern for a non-empty sequence of characters.

The RHS should always be a "mailer:host" pair. The mailer is the configuration name of a mailer (that is, an M line in the sendmail.cf file). The "host" will be the hostname passed to that mailer.

(referência: sendmail readme , seção "USANDO MAILERTABLES")

Então, algo como:

. local:catch-all-outgoing (apenas um único ponto de acordo com Adrzej's comentário ) em / etc / mail / mailertable deve fazer com que qualquer domain.tld redirecione para a configuração do mailer local definida no sendmail.cf. Com o alias capturando o nome do host de catch-all-outgoing e fazendo com que seja um endereço de e-mail local.

Para que o mailertable funcione, ele precisa estar ativado na configuração. Adicionando

FEATURE('mailertable','hash -o /etc/mail/mailertable.db')dnl

para o arquivo de macro m4 que gera sua configuração deve cuidar disso.

Também dos arquivos de ajuda do site do sendmail:

MAILERTABLE:

Inclua uma "tabela de correspondência" que pode ser usada para substituir o roteamento de domínios específicos (que não estão na classe {w}, ou seja, nomes de host locais) . O argumento do FEATURE pode ser a definição chave. Se nenhum for especificado, a definição usada é:

hash / etc / mail / mailertable

As chaves neste banco de dados são nomes de domínio totalmente qualificados ou domínios parciais precedidos por um ponto - por exemplo, "vangogh.CS.Berkeley.EDU" ou ".CS.Berkeley.EDU". Como um caso especial do último, "." corresponde a qualquer domínio não coberto por outras chaves. Os valores devem estar no formato: mailer: domain

onde "mailer" é o nome interno do mailer e "domain" é para onde enviar a mensagem. Esses mapas não são refletidos no cabeçalho da mensagem. Como um caso especial, os formulários: local: usuário encaminhará ao usuário indicado usando o mailer local,

    
por 11.09.2013 / 17:24
1

Sendmail: catchall para endereços locais e não locais

Você pode definir SMART_HOST para domínios não locais e MAIl_HUB para domínios de e-mail locais.

sendmail.mc:

define('SMART_HOST','local:some_existing_user')dnl
define('MAIL_HUB','local:some_existing_user')dnl
dnl optional part to list local users/mailboxes excluded from the redirect
dnl in /etc/mail/direct-users file (one user per line)
LOCAL_CONFIG
FL/etc/mail/direct-users
divert(0)

P.S.

Use echo '$=w' | sendmail -bt para obter uma lista de domínios de e-mail locais. O Sendmail, por padrão, preenche-o automaticamente.

mailertable pode ser usado para excluir algum domínio externo do redirecionamento

example.net %0
    
por 11.09.2013 / 23:11