Sendmail: genérico para endereços locais e não locais

Sendmail: genérico para endereços locais e não locais

Preciso configurar uma configuração de servidor de e-mail para um ambiente de teste que aceite todos os e-mails (ou seja, para todos os usuários e todos os domínios, mesmo 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 tentei modificar /etc/mail/virtusertable para parecer

@ catchall

ou gosto

@* catchall

mas sem sucesso - endereços de correio de destino (por exemplo"[e-mail protegido]") não são reescritos parapega-tudo@, então a entrega é tentada para o 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 os curingas não são suportados na parte do domínio de origem da tabela de pesquisa.

Como eu implementaria isso com o Sendmail?

Editar:ConformeComentários de AndrzejEu tentei uma entrada mailertable de

. local:catch-all-outgoing

assim como

.. local:catch-all-outgoing

e recebeu resultados idênticos sendmail -bvem 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, root, pois sendmailparece incapaz de ser executado como não-root)

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

Responder1

O que você está encontrando aqui: /etc/mail/virtusertableacredito que esteja limitado apenas a e-mails recebidos, não enviados.

Você pode usar a rota padrão em mailertable ou SMART_HOST para entregar todas as mensagens não locais para uma caixa de correio/alias local.

mailertable entry:
. local:catch-all-outgoing

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

Qualquer entrada LHS que não comece com um ponto corresponde ao nome completo do host indicado. As entradas LHS que começam com um ponto correspondem a qualquer coisa que termine com esse nome de domínio (incluindo o ponto inicial) - ou seja, elas podem ser consideradas como tendo um padrão de expressão regular ".+" inicial para uma sequência não vazia de caracteres.

O RHS deve ser sempre um par "mailer:host". O mailer é o nome de configuração de um mailer (ou seja, uma linha M no arquivo sendmail.cf). O "host" será o nome do host passado para esse mailer.

(referência:leia-me do sendmail, seção "USANDO MAILERTTABLES")

Então, algo como:

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

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

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

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

Também nos arquivos de ajuda do site sendmail:

TABELA DE ENVIO:

Inclui uma "tabela de mailer" que pode ser usada para substituir o roteamento para 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 nada 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 deste último, "." corresponde a qualquer domínio não coberto por outras chaves.Os valores devem estar no formato: mailer:domain

onde "mailer" é o nome do mailer interno e "domínio" é para onde enviar a mensagem. Esses mapas não são refletidos no cabeçalho da mensagem.Como caso especial, os formulários: local:user serão encaminhados para o usuário indicado através do mailer local,

Responder2

Sendmail: genérico para endereços locais e não locais

Você pode definir SMART_HOSTdomínios não locais e MAIl_HUBdomí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)

PS

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

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

example.net %0

informação relacionada