A autenticação SMTP do postfix não funciona com caixas de correio virtuais + userdb do SASL + Courier

2

Então, li vários tutoriais e instruções e estou tentando entender como fazer com que a autenticação SMTP funcione com caixas de correio virtuais no Postfix. Eu usei este tutorial do Ubuntu para configurar. Estou usando o Courier-IMAP e o POP3 para ler mensagens que parecem estar funcionando sem problemas.

No entanto, as credenciais usadas para ler uma caixa de correio não estão funcionando para o SMTP. Eu posso ver a partir de /var/log/auth.log que o PAM está sendo usado, isso requer uma conta de usuário do UNIX para trabalhar? Como estou usando caixas de correio virtuais para evitar a criação de contas de usuário.

li305-246 saslauthd[22856]: DEBUG: auth_pam: pam_authenticate failed: Authentication failure
li305-246 saslauthd[22856]: do_auth         : auth failure: [user=fred] [service=smtp] [realm=] [mech=pam] [reason=PAM auth error]

/var/log/mail.log

li305-246 postfix/smtpd[27091]: setting up TLS connection from mail-pb0-f43.google.com[209.85.160.43]
li305-246 postfix/smtpd[27091]: Anonymous TLS connection established from mail-pb0-f43.google.com[209.85.160.43]: TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)
li305-246 postfix/smtpd[27091]: warning: SASL authentication failure: Password verification failed
li305-246 postfix/smtpd[27091]: warning: mail-pb0-f43.google.com[209.85.160.43]: SASL PLAIN authentication failed: authentication failure

Eu criei contas no userdb como este tutorial . O Postfix também usa authuserdb?

Quais informações de depuração são necessárias para ajudar a diagnosticar meu problema?

main.cf:

# TLS parameters
smtpd_tls_cert_file = /etc/ssl/certs/smtpd.crt
smtpd_tls_key_file = /etc/ssl/private/smtpd.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

# SMTP parameters

smtpd_sasl_local_domain =
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination
smtp_tls_security_level = may
smtpd_tls_security_level = may
smtpd_tls_auth_only = no
smtp_tls_note_starttls_offer = yes
smtpd_tls_CAfile = /etc/ssl/certs/cacert.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom

/etc/postfix/sasl/smtpd.conf

pwcheck_method: saslauthd
mech_list: plain login

/etc/default/saslauthd

START=yes

PWDIR="/var/spool/postfix/var/run/saslauthd"
PARAMS="-m ${PWDIR}"
PIDFILE="${PWDIR}/saslauthd.pid"
DESC="SASL Authentication Daemon"
NAME="saslauthd"
MECHANISMS="pam"
MECH_OPTIONS=""
THREADS=5
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"

/etc/courier/authdaemonrc

authmodulelist="authuserdb"

Eu modifiquei apenas uma linha em authdaemonrc e reiniciei o serviço conforme este tutorial . Adicionei contas a /etc/courier/userdb via userdb e userdbpw e execute makeuserdb conforme o tutorial.

RESOLVIDO

Obrigado a Jenny D por sugerir o uso de rimap para auth no servidor IMAP localhost (que lê as credenciais do userdb).

Eu atualizei o /etc/default/saslauthd para iniciar o saslauthd corretamente ( esta página foi útil)

MECHANISMS="rimap"
MECH_OPTIONS="localhost"
THREADS=0
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"

Depois de fazer isso, recebi o seguinte erro em /var/log/auth.log :

li305-246 saslauthd[28093]: auth_rimap: unexpected response to auth request: * BYE [ALERT] Fatal error: Account's mailbox directory is not owned by the correct uid or gid: 
li305-246 saslauthd[28093]: do_auth         : auth failure: [user=fred] [service=smtp] [realm=] [mech=rimap] [reason=[ALERT] Unexpected response from remote authentication server]

Esta postagem no blog detalhou uma solução configurando IMAP_MAILBOX_SANITY_CHECK=0 em /etc/courier/imapd .

Em seguida, reinicie seus daemons courier e saslauthd para que as alterações de configuração entrem em vigor.

sudo /etc/init.d/courier-imap restart
sudo /etc/init.d/courier-authdaemon restart
sudo /etc/init.d/saslauthd restart

Assista /var/log/auth.log ao tentar enviar e-mail. Espero que você esteja bem!

    
por Greg K 08.07.2012 / 12:46

1 resposta

3

Esta é mais uma questão sasl do que uma questão do Postfix. Você tem o postfix configurado para falar com o sasl - até agora, tudo bem. Agora você precisa informar ao saslauthd onde encontrar seus nomes de usuário e senha. Se você não fornecer argumentos, o padrão será tratá-los como usuários locais, que é o que você está vendo no seu auth.log.

Tanto quanto eu sei (o que pode não ser muito longe quando se trata de SASL), ele não usa o mesmo banco de dados que o seu usuário virtual para o pop3. Mas há uma opção para o saslauthd tentar acessar o servidor IMAP com as mesmas credenciais - isso deve fazer o que você quer, eu acho.

Para fazer isso, você inicia o saslauthd assim:

saslauthd -a rimap -O myimap.server.com

Você deve ser capaz de testar a autenticação com o programa testsaslauthd, que deve vir com a instalação do sasl. Boa sorte!

    
por 08.07.2012 / 13:27