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 -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, root, pois sendmail
parece 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/virtusertable
acredito 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-outgoing
e 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_HOST
domínios não locais e MAIl_HUB
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)
PS
Use echo '$=w' | sendmail -bt
para 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