quinta-feira, dezembro 07, 2006

Postfix


O postfix será nosso servidor de e-mail, ele escutará o protocolo SMTP pela porta 25/tcp e será responsável pelo transporte das mensagens. O Postfix é o carro-chefe de nosso Sistema, então fica difícil apresentar sua instalação em uma única parte do artigo, então primeiramente irei construí-lo a partir do ports, e na parte final iremos configurá-lo, pois sua configuração depende de vários outros serviços.

Instalando o Postfix

O Postfix irá precisar de alguma dependências, porém tudo isto é feito automaticamente a partir do ports. Uma única observação, se a autenticação for feita através das senhas de usuários do UNIX, é necessário instalar cyrus-sasl2-saslauthd. Neste caso não estaremos utilizando, então isto não se faz necessário.

O ports do postfix fica em /usr/ports/mail/postfix. Para construir o Postfix apenas digite make no diretório do ports, neste momento aparecerá uma tela com as opções de configuração. Eu escolhi as opções:

NOPCRE Pois eu não irei utilizar expressões regulares do perl.
Sasl2 Para autenticação SMTP
DB43 Para criar tabelas de aliases e outras configurações com base de dados DB.
MySQL Para habilitar o suporte ao MySQL.

A partir daí o postfix começa a ser construído, e dependendo da máquina isto pode demorar algum tempo. Nos instantes finas da instalação, você será perguntado se deseja ativar o postfix no mailer.conf, diga que sim, e ele será automaticamente inicializado pelo sistema.

Configurando o Sistema Operacional

O postfix não irá precisar de uma entrada no arquivo de inicialização /etc/rc.conf pois eu habilitei-o no mailer.conf, porém se você não o habilitou você precisa inserir as seguintes linhas no /etc/rc.conf

sendmail_enable="NO"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"
postfix_enable="YES"

Estas linhas servirão para desativar o Sendmail e ativar o Postfix.

O Postfix utilizará a porta 25 tanto para chegada quanto para saída de mensagem, caso você esteja utilizando um firewall, não esqueça de deixar o trafego in e out passar por esta porta. O postfix também depende do serviço de nomes, verifique se o tempo de consulta a base de dados de nomes não é muito lento, isto pode trancar seu sistema, não esqueça de liberar o tráfego 53 udp e tcp. Cuidado com o horário e o fuso-horário do sistema também é fundamental.

Courier-Imap

O Courier-Imap nos dará suporte aos protocolos de entrega de mensagem, o imap e pop3, apesar do nome, ele traz estes dois protocolos. O courier-imap é dividido em duas partes, os protocolos de transporte e de autenticação. O os protocolos de transporte serão feitos pelos daemons imapd e pop3d, e o protocolo de autenticação será feito pelo authdaemond.

Instalado o Courier-Imap

A instalação do courier-imap será feita via ports, o caminho do ports é: /usr/ports/mail/courier-imap, entre neste diretório e execute o comando make install. Após isto irá aparecer uma tela oferecendo opções de compilação, neste caso adicione somente a opção AUTH_MYSQL, que nos dará suporte ao MySQL. Após isto a instalação deverá terminar sem demais perguntas.

Configuração do Courier-Imap

Vamos dividir a configuração do courier-imap em duas partes, primeiro iremos abordar o daemon de autenticação, e logo após os daemons de entrega.

Configurando o authdaemond

O authdaemond irá por buscar informações do banco de dados sobre os usuários. Os arquivos de configuração do authdaemond estão em /usr/local/etc/authlib, e são eles, authdaemonrc responsável por características gerais do sistema e authmysqlrc responsável pela ligação entre o courier-imap e o banco de dados. Abaixo veremos os arquivos de configuração de exemplo.

authdaemonrc
authmodulelist="authmysql"   # Lista de módulos habilitados.
authmodulelistorig="authmysql" # Lista de módulos utilizados pelo Courier webadmin.
daemons=5 # Número de daemons de autenticação.
authdaemonvar=/var/run/authdaemond # Diretório utilizado por alguns scripts.. NÃO MEXA.
subsystem=mail # Para qual facilidade do syslog enviar as mesagens.
DEBUG_LOGIN=0 # Nível de debug que as mensagens são enviadas para a syslog.
DEFAULTOPTIONS="wbnodsn=1" # Opções de linha de comando.
LOGGEROPTS="" # Opções de log.
authmysqlrc
MYSQL_SERVER localhost   # Servidor do banco de dados
MYSQL_USERNAME portfix # Usuário do banco de dados
MYSQL_PASSWORD e-mail # Senha do banco de dados
MYSQL_SOCKET /tmp/mysql.sock # Socket do banco de dados
MYSQL_PORT 3306 # Porta do banco de dados
MYSQL_OPT 0 # Opções do mysql
MYSQL_DATABASE mail # Nome do banco de dados
MYSQL_USER_TABLE virtual_users # Nome da tabela com informações do usuário
MYSQL_CLEAR_PWFIELD password # Coluna com as senhas
MYSQL_UID_FIELD uid # Coluna com o userid
MYSQL_GID_FIELD gid # Coluna com o groupid
MYSQL_LOGIN_FIELD id # Coluna com o Login
MYSQL_HOME_FIELD home # Coluna com o Home
MYSQL_NAME_FIELD nome # Coluna com o nome do usuário
MYSQL_MAILDIR_FIELD maildir # Coluna com o maildir do usuário
MYSQL_QUOTA_FIELD quota # coluna com a cota do usuário
MYSQL_WHERE_CLAUSE imapok=1 # Coluna com a flag de ativação da conta

A configuração do authdaemond está pronta, agora veremos as configurações dos damons de transporte.

Configurando os daemons de transporte

Os arquivos de configuração do courier-imap estão em /usr/local/etc/courier-imap, e tem os nomes correspondentes ao seu daemon de transporte. Você pode optar por utilizar somente um dos dois protocolos, porém o imap tem algumas vantagens sobre o pop3, cabe a você escolher qual prefere, neste exemplo utilizaremos os dois. Abaixo veremos os arquivos de configuração de exemplo.

imapd
ADDRESS=0
PORT=143
MAXDAEMONS=40
MAXPERIP=4
PIDFILE=/var/run/imapd.pid
TCPDOPTS="-nodnslookup -noidentlookup"
LOGGEROPTS="-name=imapd"
IMAP_CAPABILITY="IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE"
IMAP_KEYWORDS=1
IMAP_CAPABILITY_ORIG="IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA AUTH=CRAM-MD5 AUTH=CRAM-SHA1 AUTH=CRAM-SHA256 IDLE"
IMAP_PROXY=0
IMAP_PROXY_FOREIGN=0
IMAP_IDLE_TIMEOUT=60
IMAP_CAPABILITY_TLS="$IMAP_CAPABILITY AUTH=PLAIN"
IMAP_CAPABILITY_TLS_ORIG="$IMAP_CAPABILITY_ORIG AUTH=PLAIN"
IMAP_DISABLETHREADSORT=0
IMAP_CHECK_ALL_FOLDERS=0
IMAP_OBSOLETE_CLIENT=0
IMAP_UMASK=022
IMAP_ULIMITD=65536
IMAP_USELOCKS=1
IMAP_SHAREDINDEXFILE=/usr/local/etc/courier-imap/shared/index
IMAP_ENHANCEDIDLE=0
IMAP_TRASHFOLDERNAME=Trash
IMAP_EMPTYTRASH=Trash:7
IMAP_MOVE_EXPUNGE_TO_TRASH=0
SENDMAIL=/usr/sbin/sendmail
HEADERFROM=X-IMAP-Sender
IMAPDSTART=NO
MAILDIRPATH=Maildir
pop3d
PIDFILE=/var/run/pop3d.pid
MAXDAEMONS=40
MAXPERIP=4
POP3AUTH="LOGIN CRAM-MD5 CRAM-SHA1"
AUTHMODULES="authdaemon"
POP3AUTH_ORIG="PLAIN LOGIN CRAM-MD5 CRAM-SHA1 CRAM-SHA256"
POP3AUTH_TLS=""
DEBUG_LOGIN=2
PORT=110
ADDRESS=0
TCPDOPTS="-nodnslookup -noidentlookup"
LOGGEROPTS="-name=pop3d"
POP3DSTART=NO
MAILDIRPATH=Maildir

As configurações padrões são bastante completas, os itens que vale a pena dar uma revisada são:

MAXDAEMONS=40   # Número máximo de processos
MAXPERIP=4 # Conexões máximas simultâneas por IP

Configuração do SO

Agora que tudo está configurado, basta ativar o courier-imap na inicialização do sistema. para isto basta adicionar as seguintes linhas em /etc/rc.conf.

courier_authdaemond_enable="YES" # Obrigatória
courier_imap_pop3d_enable="YES" # Para ativar o pop3
courier_imap_imapd_enable="YES" # Para ativar o imapd

O protocolo imap utiliza a porta 143 TCP, e o protocolo pop3 utiliza a porta 110 TCP, se você está utilizando um firewall, libere estas portas. Os logs serão enviados para a facilidade mail do syslog, por padrão o arquivo de log será /var/log/maillog.

Courier-Maildrop

O Maidrop será nosso agente de entrega de mensagem, ele irá entregar as mensagens em suas devidas caixas de correio. Bom, mas porque não utilizar o daemon virtual que vem juntamente com o Postfix? Primeiramente, o virtual não tem controle de quota nativo, para isso iria ser preciso aplicar um patch, Segundo, o maildrop pode fazer várias verificações de mensagem, e ele cria automaticamente as caixas de correio, já com o virtual você teria de criá-las manualmente, e o maildrop oferece opções de filtros, como por exemplo desviar as mensagens de spam para uma pasta chamada Spam, retirando assim os spams da caixa de entrada.

Instalando o Maiodrop

O maildrop será instalado a partir do ports no seguinte caminho, /usr/ports/mail/maildrop. Como as informações de usuário estão armazenadas no banco de dados, precisamos adicionar o suporte para a Authlib, para isto execute o seguinte comando para construir o ports.

# make -DWITH_AUTHLIB install

A partir deste memento a instalação deve concluir sem mais perguntas.

Após a instalação, devemos criar um usuário para executar o maildrop. neste caso criei o usuário vmail, e o com o grupo padrão mail. O UID e o GID do usuário devem ser os mesmo do uid e gid do banco de dados. Isto determinará o dono dos diretórios e arquivos das caixas de correio, então no memento da criação de uma nova conta, não esqueca de inserir os valores uid e gid iguais as do usuário vmail e do grupo mail. O maildrop será executado com o usuário vmail, porém ele não possuirá permição para comunicar-se com a base de dados, por isto o executavel do maildrop deve ter o SetUID habilitado, para isto execute o seguinte comando:

# chmod u+s /usr/local/bin/maildrop

A configuração básica do maildrop está pronta.

Configurando o Maildrop

O maildrop tem apenas um arquivo de configuração, que está em: /usr/local/etc/maildroprc, na verdade este arquivo nem precisa existir. A configuração do banco de dados não é necessária, pois ele irá utilizar a Authlib para isto, e isto nós já configuramos anteriormente para o courier-imap.

O arquivo de configuração do maildrop irá conter uma rotina de tarefas que ele deve fazer ao entregar uma mensagem, veja o exemplo que utilizamos abaixo.

logfile "/var/log/maildrop.log"   #Arquivo de Log

`test -d $HOME/$DEFAULT` # Testa se a caixa de correio existe
if ($RETURNCODE!=0) # Caso não exista...
{
`maildirmake $DEFAULT` # Cria a caixa de correio,
`maildirmake -f .Spam $HOME/$DEFAULT` # e as pastas para o Spam
`maildirmake -f .Trash $HOME/$DEFAULT` # e a lixeira
}

QUOTA="$MAILDIRQUOTA"'S'
`maildirmake -q $QUOTA $HOME/$DEFAULT` # Ajusta a cota da caixa de correio

if (/^X-Spam-Status: Yes/) # E se a mensagem for um Spam, ela a envia
{ # para a pasta Spam.
to "$DEFAULT/.Spam/"
}

Ligando ao Postfix

Para ligá-lo ao Postfix, apenas verifique a linha sobre o transporte maildrop no arquivo /usr/local/etc/postfix/master.cf ela deve estar como no exemplo abaixo.

maildrop  unix  -       n       n       -       -       pipe
flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient} -w 90

Com a opção -w 90 o maildrop irá enviar a mensagem contida no arquivo /usr/local/etc/quotawarnmsg avisando que a cota de uso de sua conta chegou aos 90%, o valor pode ser alterado a seu critério, e por padrão a mensagem não existe, então você deve cria-la.

1 Comments:

Anonymous Anônimo said...

They may carry a flexible repayment structure. You can search the promises of such cash loans from online lenders. That not only saves time but also helps the borrower throughout the comparing the rates and other charges of all the banks available and selecting the best out of it. If you too are a victim of this bad interval of economy, and looking for fiscal aids to meet your prized unavoidable expense, you should contact online financiers. [url=http://fastonlinepayday.co.uk/]payday loan uk [/url] Pay Day Loans Uk , #e3M

quinta-feira, 04 abril, 2013  

Postar um comentário

<< Home