Por que o Postfix não retransmite apenas o nome do usuário para o Dovecot via lmtp e como isso seria conseguido no FreeBSD?

1

Estou tendo problemas para entender como o Postfix retransmite dados para o Dovecot e procura por um mínimo (como um pequeno desvio dos arquivos de configuração da distribuição possível), mas um exemplo completo de como realizar o seguinte:

Eu tenho vários domínios para os quais desejo receber mensagens. Eu quero ter usuários virtuais com todas as informações sobre eles, incluindo senhas armazenadas em arquivo (s) de texto simples.

Então, seguindo o exemplo do Postfix, eu teria

virtual_mailbox_domains = mydomain1.com, mydomain2.com, ... (or a hash)
virtual_mailbox_maps = hash:/path/to/vmailboxes
virtual_transport = lmtp:unix:private/dovecot-lmtp

e em vmailboxes eu teria

[email protected] someuser

e no Dovecot eu teria

passdb {
  driver = passwd-file
  args = scheme=plain-md5 username_format=%n /usr/local/etc/dovecot/users
}
userdb {
  driver = passwd-file
  args = username_format=%n /usr/local/etc/dovecot/users
  default_fields = uid=dovecot gid=dovecot home=/home/dovecot/%u
}

Então, do jeito que eu vejo, eu devo ter o Postfix aceitando e-mail para [email protected] , entenda que ele é destinado ao usuário chamado algum usuário e retransmita exatamente isso para Dovecot. No entanto, o Postfix sempre retransmite usuá[email protected] para o Dovecot, que definitivamente não é o que eu quero, pois posso ter outros endereços de e-mail apontando para o mesmo usuário, digamos

[email protected] someuser
[email protected] someuser

e espero que a Dovecot consulte seu banco de dados de senha / usuário e coloque o e-mail no diretório apropriado para algum usuário . Eu também espero que ele consulte o mesmo banco de dados para a autenticação IMAP.

E, finalmente, eu gostaria de ter autorização SMTP para que algum usuário possa se conectar ao Postfix e usá-lo como um relé. Como eu faria isso com a configuração que tenho? Devo ter tabelas de senhas separadas no Postfix apenas para isso, ou o Postfix de alguma forma consultará o Dovecot e permitirá que o dito usuário envie e-mails?

    
por Захар Joe 08.03.2018 / 21:45

1 resposta

0

Então, houve dois erros, essencialmente.

Primeiro, o virtual_mailbox_maps não é a opção certa para o meu cenário. Em vez disso, tenho que usar o virtual_alias_maps.

Em segundo lugar, precisamos fornecer endereços de e-mail à esquerda e à direita das virtualmailboxes, porque senão o Postfix tentará enviar para $ myhostname, ele não poderá fornecer um nome de usuário simples via LMTP. Então, no caso de

[email protected] [email protected]
[email protected] [email protected]
[email protected] anotheruser

As duas primeiras linhas funcionariam bem, retransmitindo mensagens destinadas a [email protected] e [email protected] a um usuário chamado "[email protected]" no Dovecot. A única diferença é que agora, ao autenticar, teremos que fazer o login usando "[email protected]" em vez de apenas um nome de usuário sem um "@ ...".

A terceira linha, no entanto, retransmitiria o e-mail para [email protected] para [email protected], e a gravação da caixa de correio será tratada pelo Postfix; o LMTP não será chamado nesse caso.

Finalmente, é melhor usar relay_ em vez de virtual_ porque nos termos do Postfix a retransmissão de email para o serviço LMTP da Dovecot, mesmo se estiver sendo executado na mesma máquina, é o mesmo que retransmiti-lo para outro lugar, portanto, usar as opções relay_ é "melhor". p>

A configuração de trabalho para main.cf seria então

relay_transport = lmtp:unix:private/dovecot-lmtp
relay_domains = mydomain1.com, mydomain2.com
virtual_alias_maps = hash:/usr/local/etc/postfix/virtualmailboxes

smtpd_sasl_type = dovecot
smtpd_sasl_path = /var/spool/postfix/private/auth
smtpd_sasl_auth_enable = yes

smtpd_tls_cert_file = /etc/ssl/servercertificate.pem
smtpd_tls_key_file = /etc/ssl/serverkey.pem
smtpd_tls_security_level = may
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3

Todas as outras opções de acordo com suas necessidades, mas eu não toquei em mais nada no exemplo main.cf que veio com o Postfix para fazer as coisas funcionarem.

virtualmailboxes:

[email protected] [email protected]
[email protected] [email protected]
[email protected] [email protected]

Parte de autorização configurada no Dovecot:

auth_debug = yes
auth_verbose = yes
auth_mechanisms = plain
passdb {
  driver = passwd-file
  args = scheme=plain-md5 username_format=%u /usr/local/etc/dovecot/users
}
userdb {
  driver = passwd-file
  args = username_format=%u /usr/local/etc/dovecot/users
  default_fields = uid=dovemail gid=dovemail home=/var/mail/%u
}

/ usr / local / etc / dovecot / users:

[email protected]:{PLAIN}yourpassword::::::
[email protected]:{PLAIN}yourpassword::::::

/usr/local/etc/dovecot/conf.d/10-master.conf precisa remover o comentário de algumas linhas no meio para fazer com que a seção já presente esteja assim:

service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    mode = 0600
    group = postfix
    user = postfix
  }

e outra seção no mesmo arquivo:

unix_listener /var/spool/postfix/private/auth {
   mode = 0660
   user = postfix
   group = postfix
}

O usuário do dovemail precisa ser criado e receber direitos de leitura / gravação no diretório de e-mail, que é / var / mail

    
por 13.03.2018 / 11:46