Eu gostaria de executar o Postfix em um VPS Debian para enviar e-mails do meu aplicativo. O aplicativo (em execução em outros VPS) se conectaria ao Postfix via SMTP. O Postfix não precisa lidar com o email recebido; é apenas enviar as mensagens enviadas.
Para evitar ser um relé aberto, a autenticação SASL deve ser usada. No entanto, não quero executar o Dovecot ou o MySQL para autenticação SASL.
Como posso configurar a autenticação SASL usando um arquivo simples (contendo nomes de usuário e senhas)?
Eu já encontrei uma pergunta semelhante ; no entanto, nenhuma resposta satisfatória foi dada lá.
Respostas:
O Postfix atualmente suporta apenas dois métodos de autenticação SASL. Uma delas é Dovecot, que você não quer. O outro é o Cyrus, que é o mais próximo possível do que você deseja obter sem reescrever o Postfix. Isso envolve a execução de um daemon de autenticação separado (
saslauthd
), mas o arquivo de autenticação é fácil de editar e atualizar.O básico para usar o Cyrus SASL pode ser encontrado no site de documentação do postfix , mas aqui está uma breve descrição. Por favor, olhe o link se algo estiver confuso de alguma forma!
Comece instalando o Cyrus SASL com o plug-in
sasldb
. (Como fazer isso é deixado como um exercício para o leitor; presumivelmente há um pacote em qualquer sistema de pacotes que sua marca de unix esteja usando.) Como a comunicação entre o Postfix e o SASL ocorrerá por meio de um soquete de domínio unix, convém adicione postfix ao grupo SASL e verifique se esse grupo possui permissões de leitura e execução no diretório/var/run/saslauthd
.Configurar SASL
Configure o SASL para usar o sasldb editando /etc/sasl2/smtpd.conf:
O plug-in sasldb significa que o sasl usará um arquivo Berkeley DB para nomes de usuário e senhas. Você adiciona usuários com o comando
saslpasswd2
:Observe que você especifica um domínio junto com o nome de usuário e o usuário precisará usar "nomedeusuá[email protected]" em vez de apenas "nomedeusuário" ao se autenticar.
Você pode verificar quais usuários foram inseridos executando
sasldblistusers2
.Inicie o saslauthd e verifique se a autenticação funciona executando
Configurar o Postfix
Feito isso, diga ao Postfix para usar o SASL e ao Cyrus que é SMTP que está autenticando, editando /etc/postfix/main.cf para conter
Em seguida, recarregue o postfix e você deverá estar definido.
fonte
sasldblistusers2
gera corretamente a lista de usuários que adicionei. No entanto, ao executartestsaslauthd
, eu recebo este resultado:0: NO "authentication failed"
. Você tem alguma idéia de como eu poderia consertar isso? Isto é do meu/var/log/auth.log
:saslauthd[30471]: do_auth : auth failure: [user=XXX@XXX] [service=smtpd] [realm=] [mech=pam] [reason=PAM auth error]
-s smtpd
-lo. Se eu definirMECHANISMS="sasldb"
no/etc/default/saslauthd
e reiniciar saslauthd, eu obter o mesmo resultado de testsaslauthd. O log de autenticação mostra uma mensagem diferente:saslauthd[3706]: do_auth : auth failure: [user=XXX@XXX] [service=smtpd] [realm=] [mech=sasldb] [reason=Unknown]
testsaslauthd -u username -r example.com -p XXX
retorna0: OK "Success."
. Agora eu vou verificar se Postfix pode contornar esse ...-s smtpd
você vai fazê-lo usar PAM em vez de sasldb, por isso, não faça isso ...O SASL é apenas uma das inúmeras maneiras de evitar isso. Outra seria incluir os IPs na lista de permissões que você usa nos outros VPS ou exigir certificados de cliente TLS (pode ser considerado o caminho mais seguro).
Basta configurar uma CA de assinatura na máquina postfix e assinar um certificado por VPS que você deseja enviar um email.
Em seguida, exija a verificação completa do certificado do cliente para todas as mensagens enviadas; desative outros métodos de envio.
O que você pede não é possível, pois o postfix não suporta SASL diretamente.
fonte
Apenas esclarecendo algumas coisas,
Criando uma conta no sasldb:
Testando autenticação:
(nota: o nome de usuário não é seguido pelo fqdn)
Eu também gostaria de acrescentar que a criação de uma conta root
não permitirá que você se autentique,
Mas isso não é um bug. É apenas um recurso de segurança.
fonte
Se você não precisar lidar com o correio recebido, não se preocupe com a autenticação. Apenas bloqueie o tráfego recebido com um firewall e / ou restrinja-o apenas ao host local.
Não há mais problema de retransmissão aberta, e você também evita complicar as coisas para aplicativos que precisam enviar email pelo postfix.
fonte