Ja tive que resolver muitos problemas relacionados a servidores de e-mail.Pessoalmente prefiro a combinacao Linux + Postfix + Alguma base de dados (LDAP, SQL) + SASL.No entremeio desses problemas, encontrei uma solucao que considero adequada, robusta, escalavel. Estou falando do Kyapanel.Hoje o Kyapanel tambem se integra com outra solucao de colaboracao, o Zimbra.Mas para efeito desse post, coloco uma contribuicao que fiz para solucionar um problema de autenticacao SASL com base de dados MySQL (http://www.kyapanel.com/wiki/doku.php?id=kyapanel:sasl_auth_mysql_pt_br)SMTP autenticado com SASL na base MySQL do KyaPanelOlhando o historico desta lista, verifiquei que muitos administradores apresentam dificuldades em integrar o Kya Panel a autenticacao SASL (principalmente com a base de dados em MySQL). A solucao para LDAP ja havia sido proposta aqui:http://www.kyapanel.com/wiki/doku.php?id=kyapanel:sasl_auth_pt_brComo queria utilizar o KP com MySQL, deparei-me com todos os problemas descritos pelos colegas ate aqui. Por isso envio os passos que adotei na solucao do meu problema especifico.1 - ProblemaO Kya Panel nao se encarrega de instalar o SMTP Relay de redes externas ao servidor, provendo algum tipo de autenticacao de usuario para isso, conforme essa mensagem:http://sourceforge.net/mailarchive/forum.php?thread_name=c037b98e0707311459y5cc226d3sf3512fbcbb8ba873%40mail.gmail.com&forum_name=jegue-usersO Anahuac propoe duas solucoes: SMTP-AUTH e POP-Before-SMTP. Como opiniao pessoal, considero o POP-Before-SMTP um pouco mais inseguro (basta pensar num relay de rede atras de NAT com 300 maquinas: uma vez aberto o relay, temos 300 servidores de e-mail potenciais para SPAM).2 - SMTP-AUTH (SASL + MySQL)O caminho das pedras comecou com a mensagem do Roger Lovato:http://sourceforge.net/mailarchive/forum.php?thread_name=11d703790801120357o75297e01n3200f3c6412c52a2%40mail.gmail.com&forum_name=jegue-usersAqui ele propoe o esquema (corretamente alias) da integracao do SASL + MySQL + Postfix. Apos muita procura, encontrei esse tutorial (que com algumas mudancas, pois uso Debian Etch) montou a base principal da solucao: http://www.nervous.it/txt/Postfix-SMTP-AUTH-4-DUMMIES.html3 - libpam-mysqlEntretanto, apos a configuracao do meu sistema, o SASL teimava em nao autenticar na base MySQL. Fazia o SELECT diretamente no banco, funcionava perfeitamente; mas quando o Postfix o fazia dava erro de autenticacao:SASL LOGIN authentication failedDescobri que o problema era o pacote libpam-mysql para Debian. O mesmo possui um bug que nao entende campos MD5 no MySQL. Voce pode usar PASSWORD, CRYPT, mas MD5 nao passa. Aqui o BUG:http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=373834Solucao? Compilar o libpam-mysql na mao.4 - Compilando libpam-mysql- Baixar o codigo fonte do PAM-MySQL aqui: http://pam-mysql.sourceforge.net/- Resolver as dependencias da compilacao:apt-get install gcc g++ make libpam0g-dev libssl-dev mysql-clientlibmysqlclient15-dev- Desempacotar o PAM-MySQL- ln -s /usr/include/openssl/md5.h /usr/include/md5.h- ./configure --with-openssl=/usr/- make installO arquivo deve ser encontrado em /lib/security/pam_mysql.so Pronto, libpam-mysql instalado (alias, boa ideia seria gerar um pacote .deb ja corrigido; eu procurei, nao encontrei)5 - Configurando SASL + MySQL + PostfixCriar um arquivo /etc/pam.d/smtp com o seguinte conteudo:auth required /lib/security/pam_mysql.so user=usuario passwd=senhahost=127.0.0.1 db=jp table=jp_accounts usercolumn=account_wmailpasswdcolumn=account_pwd crypt=3account sufficient /lib/security/pam_mysql.so user=usuario passwd=senhahost=127.0.0.1 db=jp table=jp_accounts usercolumn=account_wmailpasswdcolumn=account_pwd crypt=3Note que:- O banco, as tabelas e as colunas sao as padroes de instalacao do KP - A opcao crypt=3 se refere a busca em campos MD5 no MySQLCriar o arquivo /etc/postfix/sasl/smtpd.conf com o seguinte conteudo:pwcheck_method: saslauthdmech_list: PLAIN LOGINEditar o arquivo /etc/default/saslauthd e marcar as seguintes opcoes:START=yesMECHANISMS="pam"Editar o arquivo /etc/init.d/saslauthd (no Debian Etch) e localizar a seguinte linha:DAEMON_ARGS="$DAEMON_ARGS -a $MECHANISMS $MECH_OPTIONS $OPTIONS$THREAD_OPTIONS"e modifica-la para:DAEMON_ARGS="$DAEMON_ARGS -a $MECHANISMS $MECH_OPTIONS -r $OPTIONS$THREAD_OPTIONS"Como nosso Postfix roda em chroot por padrao, mover o diretorio do sasl:# mv