Como fazer com que o endereço do remetente seja “[email protected]” no Postfix?

15

Eu configurei um servidor Postfix com SMTP AUTH (STARTTLS na porta 587). Todos os meus usuários estão no domínio "example.org". Desejo fazer com que o endereço do remetente seja "[email protected]".

Aprendi que isso pode ser alcançado com as opções main.cf

smtpd_sender_restrictions = reject_sender_login_mismatch, ...
smtpd_sender_login_maps = hash:/etc/postfix/smtpd_sender_login_maps

com um arquivo login_maps como:

[email protected] a
[email protected] b
[email protected] c
...

(consulte também Bloquear endereço do remetente falsificando com SMPT AUTH ), mas isso significa que terei que editar o arquivo login_maps toda vez que tiver um novo usuário. Não preciso de um mapeamento tão flexível: ele sempre deve ser "[email protected]". Existe uma opção mais fácil?

Chris Lercher
fonte

Respostas:

14

Primeiro, verifique se a instalação do Postfix suporta o pcre digitando o comando postconf -me procurando uma linha pcrenele. Depois de verificar se possui suporte para o PCRE, você pode fazer o seguinte:

/etc/postfix/login_maps.pcre:

/^(.*)@example\.org$/   ${1}

Em main.cf:

smtpd_sender_login_maps = pcre:/etc/postfix/login_maps.pcre

Isso deve funcionar bem.

mailq
fonte
Isto é perfeito. Exatamente o que eu estava procurando!
quer
3
Para usuários do Ubuntu, você pode obter o postfix pcre com sudo apt-get install postfix-pcre. Talvez isso fosse óbvio para a maioria.
NeilMonday
Não há como omitir o domínio na regex ou na $myhostnamevariável de referência ?. Aqui você pode ver que Postfix é capaz de pesquisar a tabela de referência por parte do usuário do e-mail ...
Jaime Hablutzel
Acredito que você deseje escapar da barra invertida do '.' caractere no nome de domínio por isso é interpretado como uma correspondência literal: /^(.*)@example\.org$/
Arnon
Caso contrário, isso corresponde a "test @ exampleXorg" e "[email protected]", que pode não ser exatamente o comportamento pretendido.
Arnon #
6

A regex mencionada na outra resposta corresponde à parte do usuário do endereço de email ( usuário logado no @ example.org). Aqui estão algumas informações adicionais.

Para usar o endereço de email completo como nome de usuário, use o seguinte regex (por exemplo, em /etc/postfix/login_map):

/^(.*)$/   ${1}

Isso significa que seu nome de usuário é sempre o seu endereço de e-mail completo ( [email protected] ) - nenhum outro nome de usuário existente pode enviar a partir desse endereço - e você não precisa atualizar um arquivo de configuração Postfix adicional toda vez que adicione um usuário.

Isso pode ser usado em um servidor que possui vários domínios configurados. O usuário [email protected] só pode enviar a partir desse endereço, mas não a partir de [email protected] (usuário e email diferentes, pessoa diferente). O nome de usuário john.doe seria ambíguo nesse caso.

Além disso, dependendo da sua configuração, a configuração smtpd_sender_login_maps, que deve apontar para esse arquivo, pode estar no master.cf (em vez de main.cf). A documentação oficial do Dovecot possui o seguinte exemplo (se você estiver usando SASL / envio):

submission inet n - n - - smtpd
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=private/auth
  -o smtpd_sasl_security_options=noanonymous
  -o smtpd_sasl_local_domain=$myhostname
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o smtpd_sender_login_maps=hash:/etc/postfix/virtual
  -o smtpd_sender_restrictions=reject_sender_login_mismatch
  -o smtpd_recipient_restrictions=reject_non_fqdn_recipient,reject_unknown_recipient_domain,permit_sasl_authenticated,reject

Neste exemplo, a configuração deve ser ajustada para apontar para o arquivo correto e usar regex ou (melhor) pcre como tipo. Especialmente se um arquivo chamado "virtual" já for usado para outra finalidade (por exemplo, para virtual_alias_maps, como mostrado em um exemplo oficial do Postfix ), outro arquivo deve ser usado para o mapeamento de login.

A partir de:

smtpd_sender_login_maps=hash:/etc/postfix/virtual

Para:

smtpd_sender_login_maps=pcre:/etc/postfix/login_map
c0xc
fonte
0

Você pode usar a combinação de regexp no cabeçalho, como mostrado aqui: http://www.akadia.com/services/postfix_uce.html ? Em seguida, você pode combinar com o regexp como [*@example.org] para garantir apenas o remetente de example.org.

sonstabo
fonte
Vamos supor que eu possa usar "regexp:" aqui (?) Como posso especificar a regexp como tal, que o usuário "a" possa enviar como "[email protected]", mas não como "[email protected]"?
Chris Lercher
@sonstabo seria bom se você incluir a amostra de configuração
Jaime Hablutzel