Solução completa de serviço de correio baseado em software livre (Debian GNU/Linux)
Recompilação do artigo "Postfix-2 + domínios virtuais + MySQL + SASL + PostfixAdmin", de autoria do Sr. Marco A. S. Máximo. Nesse novo artigo os passos foram tomados levando em consideração os recursos do Debian e usando (sempre que possível) os pacotes dos repositórios oficiais.
Parte 4: Instalando o Courier-IMAP
Como iremos utilizar o Postfix com suporte a Maildir ao estilo Qmail, então o Courier-IMAP é o programa que permite o acesso a esse tipo de caixa postal. Ele também vai ser responsável por validar os logins dos usuários e permitir que eles baixem as suas mensagens por POP3 ou acesso por IMAP. Tudo isso lendo informações da tabela "mailbox" no MySQL.
Instalando (pelo apt-get do Debian):
# apt-get install courier-imap courier-authmysql courier-pop courier-base courier-imap-ssl courier-pop-ssl
Configurando:
# cd /etc/courier
# cp /usr/share/doc/courier-base/examples/quotawarnmsg.example ./quotawarnmsg
# mkdir dist
# cp * dist/
DICA: Acho interesante manter os arquivos *.dist, isso irá ajudar caso você queira lembrar das configurações default do Courier.
As configurações default dos arquivos (imapd e pop3d), ao meu ver, já são boas. Altere caso você sinta necessidade.
Edite o /etc/courier/authmysqlrc, esse arquivo é responsável pelas configurações do Courier para que ele conecte no MySQL e autentique os usuários. Edite-o conforme as suas configurações. Exemplo:
# vim /etc/courier/authmysqlrc
MYSQL_SERVER localhost MYSQL_USERNAME postfix MYSQL_PASSWORD xxxxx MYSQL_SOCKET /var/run/mysqld/mysqld.sock MYSQL_PORT 3306 MYSQL_OPT 0 MYSQL_DATABASE postfix MYSQL_USER_TABLE mailbox MYSQL_CRYPT_PWFIELD password MYSQL_UID_FIELD uid MYSQL_GID_FIELD gid MYSQL_LOGIN_FIELD username MYSQL_HOME_FIELD home MYSQL_NAME_FIELD name MYSQL_MAILDIR_FIELD maildir MYSQL_QUOTA_FIELD quota MYSQL_WHERE_CLAUSE active=1
ATENÇÃO: Não deixe espaços ou tab no começo do nome. Exemplo:
MYSQL_MAILDIR_FIELD maildir MYSQL_QUOTA_FIELD quotaIsso causa erro para o Maildrop.
Inicie o serviço:
# /etc/init.d/courier-imap start
# /etc/init.d/courier-imap-ssl start
# /etc/init.d/courier-pop start
# /etc/init.d/courier-pop-ssl start
# /etc/init.d/courier-authdaemon start
Teste se os serviços IMAP e POP iniciaram sem problema, vamos rodar os seguintes comandos:
# ps ax | grep courier
5148 ? 0:00 /usr/sbin/couriertcpd -address=0 -stderrlogger=/usr/sbin/courierlogger -maxprocs=40 -maxperip=20 -pid=/var/run/courier/imapd.pid -nodnslookup -noidentlookup 143 /usr/lib/courier/courier/imaplogin /usr/lib/courier/authlib/authdaemon /usr/bin/imapd Maildir
5150 ? 0:00 /usr/sbin/courierlogger imaplogin
5165 ? 0:00 /usr/sbin/couriertcpd -address=0 -stderrlogger=/usr/sbin/courierlogger -stderrloggername=imapd-ssl -maxprocs=40 -maxperip=20 -pid=/var/run/courier/imapd-ssl.pid -nodnslookup -noidentlookup 993 /usr/bin/couriertls -server -tcpd /usr/lib/courier/courier/imaplogin /usr/lib/courier/authlib/authdaemon /usr/bin/imapd Maildir
5167 ? 0:00 /usr/sbin/courierlogger imapd-ssl
5178 ? 0:00 /usr/sbin/couriertcpd -pid=/var/run/courier/pop3d.pid -stderrlogger=/usr/sbin/courierlogger -maxprocs=40 -maxperip=4 -nodnslookup -noidentlookup -address=0 110 /usr/lib/courier/courier/courierpop3login /usr/lib/courier/authlib/authdaemon /usr/lib/courier/courier/courierpop3d Maildir
5180 ? 0:00 /usr/sbin/courierlogger courierpop3login
5195 ? 0:00 /usr/sbin/couriertcpd -pid=/var/run/courier/pop3d-ssl.pid -stderrlogger=/usr/sbin/courierlogger -stderrloggername=pop3d-ssl -maxprocs=40 -maxperip=4 -nodnslookup -noidentlookup -address=0 995 /usr/bin/couriertls -server -tcpd /usr/lib/courier/courier/courierpop3login /usr/lib/courier/authlib/authdaemon /usr/lib/courier/courier/courierpop3d Maildir
5197 ? 0:00 /usr/sbin/courierlogger pop3d-ssl
5225 ? 0:00 /usr/sbin/courierlogger -pid=/var/run/courier/authdaemon/pid -start /usr/lib/courier/authlib/authdaemond.mysql
5226 ? 0:00 /usr/lib/courier/authlib/authdaemond.mysql
5227 ? 0:00 /usr/lib/courier/authlib/authdaemond.mysql
5228 ? 0:00 /usr/lib/courier/authlib/authdaemond.mysql
5229 ? 0:00 /usr/lib/courier/authlib/authdaemond.mysql
5230 ? 0:00 /usr/lib/courier/authlib/authdaemond.mysql
5231 ? 0:00 /usr/lib/courier/authlib/authdaemond.mysql
Deve aparecer algo como isso. As linhas indicam que os serviços imap e pop3 subiram usando a autenticação pelo MySQL.
Vamos checar se as portas dos serviços estão abertas e respondendo:
# netstat -a | less
tcp 0 0 *:mysql *:* LISTEN tcp6 0 0 *:imaps *:* LISTEN tcp6 0 0 *:pop3s *:* LISTEN tcp6 0 0 *:pop3 *:* LISTEN tcp6 0 0 *:imap2 *:* LISTENTeste do IMAP:
# telnet localhost 143
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE ACL ACL2=UNION STARTTLS] Courier-IMAP ready. Copyright 1998-2004 Double Precision, Inc. See COPYING for distribution information.
0 logout
* BYE Courier-IMAP server shutting down
0 OK LOGOUT completed
Connection closed by foreign host.
Teste do POP3:
# telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
+OK Hello there.
quit
+OK Better luck next time.
Connection closed by foreign host.
Se aparecer isso, então esta OK.
Vamos agora instalar/configurar o Maildrop.
Configurações bem detalhadas... Com certeza vai facilitar a vida de muita gente.
Fica a sugestão para implementar um webmail...