Confuso sobre alias_maps e virtual_alias_maps

22

Eu já li novamente os documentos sobre isso e outras postagens aqui e isso ainda não está claro para mim. Tenho testado várias coisas para entender a diferença entre alias_mapse virtual_alias_mapsnão vejo o uso dessas duas configurações separadas no postfix. Foi o que encontrei até agora (Observação: estou usando o postfix no mesmo servidor que meu servidor Web como cliente nulo para enviar apenas emails) :

1) arquivo / etc / aliases:

root: [email protected]

Quando adiciono o exposto acima alias_maps, notei que alguns serviços como o fail2ban são capazes de escolher isso e ele envia emails raiz para os endereços de email alias mencionados. No entanto, também notei que alguns outros serviços (como o mailcomando) não respeitam isso e tentam enviar o email diretamente para [email protected] que não existe (acho myoriginque é a configuração do postfix que está adicionando o @ mydomain.com) . Para corrigir isso, adicionei ovirtual_alias_maps

2) / etc / postfix / virtual

root     [email protected]

Quando o acima é adicionado, todos os serviços usam esse email de aliases virtuais. Também notei que, depois de adicionar o que foi dito acima, até o fail2ban começa a ignorar minhas configurações iniciais no /etc/aliases/arquivo e começa a seguir o endereço de email fornecido no arquivo virtual.

Agora isso me confundiu ainda mais -

  1. Por que precisamos /etc/aliases/quando o email dentro do mapa de aliases virtuais parece substituí-lo?

  2. Qual é o objetivo de mapear esses dois aliases separados e quando decidimos quando usar o quê?

  3. Por que o fail2ban (que está configurado para enviar por e-mail root@localhost) primeiro seguiu o endereço de e-mail fornecido em alias_maps(/ etc / aliases /) e depois decidiu ignorar que uma vez virtual_alias_mapsfoi adicionado?

  4. Por que todos os serviços não lêem aliases de email mencionados em / etc / aliases e funcionam apenas quando os aliases de email são adicionados no mapa de alias virtual?

Passei várias horas desde ontem e ainda não tenho certeza. Alguém pode me ajudar a esclarecer minha confusão?

EDIT: Este é o log de email quando o email é enviado para a raiz usando o mail rootcomando O e-mail de alias do root é mencionado em / etc / aliases /. Mas o correio não funciona até que eu mova esse email de aliases raiz de aliases_mapsparavirtual_aliases_maps

Registre quando o alias do email raiz for mencionado em /etc/aliases/:

Nov 14 16:39:27 Debian postfix/pickup[4339]: 0F12643432: uid=0 from=<root>

Nov 14 16:39:27 Debian postfix/cleanup[4495]: 0F12643432: message-id=<[email protected]>

Nov 14 16:39:27 Debian postfix/qmgr[4338]: 0F12643432: from=<[email protected]>, size=517, nrcpt=1 (queue active)

Nov 14 16:39:27 Debian postfix/error[4496]: 0F12643432: to=<[email protected]>, orig_to=<root>, relay=none, delay=0.04, delays=0.03/0/0/0.01, dsn=4.4.1, status=deferred (delivery temporarily suspended: connect to domainname.com[128.199.147.136]:25: Connection refused)

Este é o log após os aliases de email da raiz serem movidos de /etc/aliases/para /etc/postfix/virtualonde a entrega do email foi bem-sucedida após a alteração:

Nov 14 16:44:58 Debian postfix/pickup[4545]: ADD9A43436: uid=0 from=<root>

Nov 14 16:44:58 Debian postfix/cleanup[4563]: ADD9A43436: message-id=<[email protected]>

Nov 14 16:44:58 Debian postfix/qmgr[4544]: ADD9A43436: from=<[email protected]>, size=453, nrcpt=1 (queue active)

Nov 14 16:45:00 Debian postfix/smtp[4551]: ADD9A43436: to=<[email protected]>, orig_to=<root>, relay=somesite.com[108.160.157.120]:25, delay=1.9, delays=0.03/0/0.97/0.88, dsn=2.0.0, status=sent (250 OK id=1XpEqC-0002ry-9s)

Nov 14 16:45:00 Debian postfix/qmgr[4544]: ADD9A43436: removed
Neel
fonte
I also noticed that some other services (like mail command) does not respect this-> por favor, mostre a entrada maillog relacionadas com esta condição
masegaloeh
@masegaloeh Atualizei minha postagem com o log de email
Neel

Respostas:

35

Alguma experiência

O Postfix herdou alguns recursos do sendmail antigo, como milter e aliases. O arquivo /etc/aliasesfaz parte da aliasesherança e implementado por alias_maps. Por outro lado, o postfix possui virtual_maps/ virtual_alias_mapspara manipular o alias de email. Então, qual é a diferença entre eles?

Parâmetro alias_maps

  • Usado somente para entrega local (8)

  • De acordo com a classe de endereço no postfix , o email será entregue pelo local (8) se os nomes de domínio do destinatário estiverem listados no diretóriomydestination

  • A entrada de pesquisa era apenas partes locais de endereços de e-mail completos (por exemplo, myuser de [email protected]). Ele descarta partes do domínio do destinatário.

  • O resultado da pesquisa pode conter um ou mais dos seguintes itens:

    • endereço de email : o email será encaminhado para o endereço de email
    • / file / name : o email será anexado a / file / name
    • | command : mail canalizado para o comando
    • : include: / file / name : inclui alias de / file / name

Parâmetro virtual_alias_maps

  • Usado por entrega virtual (5)

  • Sempre invocado pela primeira vez antes de qualquer outra classe de endereço. Ele não se importa se o domínio do destinatário foi listado no mydestination, virtual_mailbox_domainsou em outros lugares. Ele substituirá o endereço / alias definido em outros lugares.

  • A entrada de pesquisa possui algum formato

    • user @ domain : corresponderá literalmente a user @ domain

    • user : corresponderá a user @site quando o site for igual a $myorigin, quando o site estiver listado em $mydestinationou quando estiver listado em $inet_interfacesou $proxy_interfaces. Essa funcionalidade se sobrepõe à funcionalidade do banco de dados de aliases locais (5).

    • @domain : corresponderá a qualquer email destinado domainindependentemente das partes locais

  • O resultado da pesquisa deve ser

    • Endereço de Email Válido
    • usuário sem domínio. O Postfix será anexado $myoriginse append_at_myoriginconfigurado yes

Por que precisamos do / etc / aliases quando o email dentro do mapa de aliases virtuais parece substituí-lo?

Como você pode ver acima, alias_maps(/ etc / aliases) possui alguns recursos adicionais (além do encaminhamento), como canalização para comando. Contrasta com virtual_alias_mapso encaminhamento de e-mail.

Qual é o objetivo de mapear esses dois aliases separados e quando decidimos quando usar o quê?

As alias_mapsdesvantagens são que você pode diferenciar se o destinatário original tiver o formato [email protected] ou [email protected] . Ambos serão mapeados para a entrada raiz alias_maps. Em outras mãos, você pode definir diferentes endereços de encaminhamento com virtual_alias_maps.

Por que o fail2ban (que está configurado para enviar e-mail para root @ localhost) primeiro seguiu o endereço de email fornecido em alias_maps (/ etc / aliases /) e depois decide ignorar que uma vez que virtual_alias_maps foi adicionado?

Antes da inclusão de virtual_alias_maps : root @ localhost era aliasado alias_mapsporque localhost estava listado em mydestination.

Após virtual_alias_maps definido : A entrada root(em virtual_alias_maps) não possui partes de domínio e o host local foi listado mydestination, portanto, corresponderá root [email protected].

Por que todos os serviços não lêem aliases de email mencionados em / etc / aliases e funcionam apenas quando os aliases de email são adicionados no mapa de alias virtual?

O comando mail rootenviará um email para o root. Como faltam partes do domínio, o postfix trivial-reescrito acrescentará myorigin às partes do domínio. Portanto, o email será enviado para root @ myorigin .

Antes da adição de virtual_alias_maps : Infelizmente, myoriginnão está listado em mydestination, portanto, não será exibido como alias alias_maps.

Após a adição de virtual_alias_maps : A entrada root(em virtual_alias_maps) não possui partes de domínio e miorigina (obviamente) iguais a myorigin, portanto, será compatível root [email protected].

masegaloeh
fonte
1
Na frase As alias_mapsdesvantagens são: você pode diferenciar ... a palavra lata provavelmente deveria ser não pode . Caso contrário, não consigo entender nada.
Daniel Böhmer 30/01
2
  1. /etc/aliasesexiste principalmente para entrega local, por exemplo, correio para raiz do cron, etc, é bom manter seus aliases locais separados, virtual_alias_mapstambém pode ser usado com bancos de dados SQL e assim por diante.

  2. virtual_alias_maps é para quando você possui usuários virtuais (e domínios virtuais), geralmente que não são mapeados para usuários do sistema, mas se você não possui domínios virtuais e muito poucos usuários, esse tipo de funcionalidade pode não ser necessário.

  3. fail2ban não se importa, apenas envia um email para o MTA.

  4. Você precisa ser mais específico, quais serviços, como e para onde eles enviam emails?

NickW
fonte
Obrigado ao @NickW algumas coisas: (1) No No: 4, o comando mail é um dos serviços que faz isso. Quero dizer, se o / etc / aliases for principalmente para entrega local a usuários locais, o mail rootcomando não deveria realmente pertencer a essa categoria? Por que este serviço não está considerando as informações em / etc / aliases quando é uma entrega local? (2) Considerando-os no meu cenário, é uma boa prática ter os endereços de e-mail dos aliases dos usuários mencionados em ambos /etc/aliases, assim como virtual_alias_mapspara que eles funcionem para tudo?
Neel
1
1. Ok, o comando mail deve usar /etc/aliasespor padrão, uma pergunta realmente estúpida, você executou newaliasesapós atualizar o arquivo, certo? 2. Eu diria que é um exagero, se as pessoas receberem mensagens da máquina local, vale a pena configurar os scripts para usar o endereço de email adequado, para que sejam roteados através do postfix e entregues no destino correto.
NickW
oi @NickW sim, eu reconstruí os aliases usando newaliasesapós a alteração. A única coisa em que posso pensar por que não usar aliases talvez seja devido à configuração do postfix que é adicionada @$domain_nameao usuário e, portanto, virtual_alias_mapsé necessária para redirecionar esses e-mails. Eu li isso nos documentos do postfix e talvez seja por isso que o mailcomando raiz não esteja funcionando com aliases: postfix.org/STANDARD_CONFIGURATION_README.html#some_local De qualquer forma, muito obrigado por me ajudar a entender melhor esse Nick. Eu realmente aprecio isso .. :) #
919 Neel
Fico feliz em ter ajudado :)
NickW