Servidor de e-mail com OpenBSD - Postfix & Cia

cvs

Nesse breve HOWTO vamos discorrer a respeito da instalação de um servidor de e-mail usando a plataforma OpenBSD com Postfix, MySQL e mais algumas coisas legais de se mexer.

[ Hits: 73.817 ]

Por: Thiago Alves em 28/01/2009 | Blog: http://www.seeufosseopresidente.com.br


Courier-IMAP



Para que façamos as configurações e instalações corretas, vamos necessitar de alguns softwares que são pré-requisitos. Então vamos começar por eles:

# cd /usr/ports/databases/gdbm/
# make install clean

# cd /usr/ports/devel/libtool
# make install clean


Provavelmente a libtool já vai estar instalada, mas só pra garantir, siga o passo acima.

# cd /usr/ports/lang/tcl/
# make install clean

# cd /usr/ports/lang/expect/
# make install clean

# cd /usr/ports/mail/courier-authlib
# env FLAVOR="no_pgsql no_ldap" make install clean


# cd /usr/ports/mail/courier-imap
# make install clean

# cd /usr/ports
# pkg_add ./packages/i386/all/courier-pop3-4.1.1p0.tgz
# pkg_add ./packages/i386/all/courier-authlib-mysql-0.58p2.tgz


Esse pacote do courier-pop3 foi gerado na instalação do courier-imap.

Agora vamos para a configuração dos daemons.

Edite o arquivo /etc/courier/authdaemonrc e na opção authmodulelist deixe apenas o authmysql, como no exemplo abaixo:

authmodulelist="authmysql"

Salve e saia, depois disso, edite o seguinte arquivo:

/etc/courier/authmysqlrc

E adicione as seguintes linhas (provavelmente ele não vai existir no diretório, então vamos criá-lo):

MYSQL_SERVER         127.0.0.1
MYSQL_USERNAME       vmail
MYSQL_PASSWORD       vmail
MYSQL_PORT           3306
MYSQL_DATABASE       mail
MYSQL_USER_TABLE     users
MYSQL_CRYPT_PWFIELD  password
MYSQL_DEFAULT_DOMAIN exemplo.com.br
MYSQL_UID_FIELD      uid
MYSQL_GID_FIELD      gid
MYSQL_LOGIN_FIELD    login
MYSQL_HOME_FIELD     home
MYSQL_NAME_FIELD     name
MYSQL_MAILDIR_FIELD  maildir
MYSQL_QUOTA_FIELD    quota

Agora para criar os certificados do SSL para o imap e para o pop3d, basta rodar o utilitário seguinte:

# /usr/local/sbin/mkimapdcert
# /usr/local/sbin/mkpop3dcert


E depois disso vamos iniciar os serviços e colocar no servidor para iniciarem junto ao boot.

# mkdir -p /var/run/courier{,-auth}/
# /usr/local/sbin/authdaemond start
# /usr/local/libexec/imapd.rc start
# /usr/local/libexec/imapd-ssl.rc start
# /usr/local/libexec/pop3d.rc start
# /usr/local/libexec/pop3d-ssl.rc start


Agora vamos colocar o SMTP para autenticar com o SASL.

Edite o arquivo /etc/postfix/main.cf e adicione as seguintes linhas:

#Ativando SASL
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination
broken_sasl_auth_clients = yes
smtpd_sasl_local_domain = $mydomain

Agora crie o arquivo de configuração /usr/local/lib/sasl2/smtpd.conf com o seguinte conteudo:

pwcheck_method: authdaemond
authdaemond_path: /var/run/courier-auth/socket
mech_list: PLAIN LOGIN

Edite o arquivo /etc/postfix/master.cf e coloque um "n" (sem as aspas) na coluna referente ao chroot, na linha do smtpd, pra ficar mais ou menos assim:

smtp      inet  n       -       n       -       -       smtpd

Pronto, pronto.

Agora vamos finalizar com a bendita quota, que é sempre necessária.

Para isso vamos usar o maildirmake na criação dos diretórios já com as quotas determinadas, por exemplo, criando o diretório do usuário thiago com uma quota aproximada de 50mb.

# maildirmake -q 50000000S /var/mail/vhosts/exemplo.com.br/thiago

Agora precisamos definir no /etc/postfix/master.cf o daemon que vai fazer as entregas de e-mail e averiguar a quota, adicione a seguinte linha no arquivo:

qdeliver  unix  -       n       n       -       -       pipe
  user=vmail argv=/usr/local/bin/deliverquota -w 90 /var/mail/vhosts/${domain}/${user}

Obs.: o -w 80 é pra informar ao usuário que a quota está chegando ao fim, então o 90 é de 80%, quando chegar nesse ponto ele vai avisar ao usuário.

E no arquivo /etc/postfix/main.cf adicione a seguinte linha:

virtual_transport = qdeliver

Para criar/alterar a mensagem de quota quase atingida você pode alterar o arquivo /etc/courier/quotawarnmsg.

Agora vamos às filtragens.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução - O que é o que?
   2. Postfix
   3. MySQL
   4. Courier-IMAP
   5. Filtragem de conteúdo (Spamassassin + ClamAV + Amavisd-new)
   6. Webmail (Squirrel ou RoundCube)
   7. Postfixadmin
   8. Sugestão de script
   9. Conclusão
Outros artigos deste autor

Virtualização com CentOS e VMware Server

Servidor de rede (PDC - Proxy Transparente - DNS)

Compilando o Apache 2 com PHP e MySQL

ProFTPD + MySQL - Servidor FTP com usuários em banco de dados

Gcombust, um frontend para cdrecord

Leitura recomendada

Utilizando GMail (Google Mail) em seu cliente de email favorito

Autenticando e enviando e-mail diretamente através da linha de comando

Acessando contas do Hotmail pelo Mozilla Mail

Servidor de E-mails Falido?

Configurando Postfix + MySQL + Courier + SPF + Clamav + SpamAssassin + Greylist + TLS

  
Comentários
[1] Comentário enviado por jmucelli em 28/01/2009 - 17:25h

Show de bola o artigo... parabéns... e continue escrevendo sobre o Open... muito bom

[2] Comentário enviado por diogojp em 29/01/2009 - 13:19h

Show de bola o artigo, vc ja tentou aplicar essa solução em um SO Freebsd ?

[3] Comentário enviado por cvs em 29/01/2009 - 13:20h

Opa..
Valeu...
Mas não, ainda não tentei...
Mas acredito que não havera muitas coisas diferentes pra fazer no freebsd.

[4] Comentário enviado por pogo em 30/01/2009 - 11:09h

CVS,

Muito bom o texto. Com certeza precisamos de mais artigos desta qualidade e voltados para sistemas BSD's. Parabéns!

[]'s

Pogo.

[5] Comentário enviado por mathcuei em 31/01/2009 - 18:49h

Caro Thiago!

Primeiramente, agradeço a grande contribuição a toda comunidade!

Estou tentando configurar o servidor como descrito, porém estou com dificuldades de instalação do postfix + mysql. O problema é relacionado alguma source nas configurações do proprio port. Qual é a versão do port que foi instalado? É por um acaso a da data 08/08/2008?

Estou usando a versão 4.4. Poderia ser isso?


Desde já agradecido!


Atenciosamente

[6] Comentário enviado por cvs em 02/02/2009 - 09:45h

Eu usei a versão padrão que fica em ftp://ftp.das.ufsc.br/pub/OpenBSD/4.4/ports.tar.gz e não tive que fazer nada alem do que descrevi para subir o postfix com suporte a mysql. A versão é a 4.4 mesmo que estou usando.

Qual erro que aparece? Cola ae pra gente ver.

[7] Comentário enviado por mathcuei em 03/02/2009 - 10:27h

Caro Thiago!

Acabei por descobrir qual era o erro apresentado. O problema na compilação estava acontecendo pelo uso do interpretador Bash. Efetuei a modificação para o interpretador padrão, continuando assim a compilação perfeitamente. Consegui subi o servidor, seguindo os passos descritos neste. Muito Obrigado pela atenção!


Atenciosamente


[8] Comentário enviado por TecBSD em 06/02/2009 - 12:08h

Para montar um script para popular:

GRANT SELECT ON mail.* to 'vmail'@'localhost' IDENTIFIED BY 'vmail';
use mail; (faltou acrescentar isso)
INSERT INTO domains (domain) VALUES ('exemplo.com.br');

INSERT INTO users (login, name, password, maildir)
VALUES ('thiago@exemplo.com.br', 'Thiago Alves', ENCRYPT('thiagogostosao'), 'exemplo.com.br/thiago/');

INSERT INTO alias_maps (account, alias)
VALUES ('postmaster@exemplo.com.br', 'postmaster@localhost.exemplo.com.br');

INSERT INTO alias_maps (account, alias)
VALUES ('root@exemplo.com.br', 'root@localhost.exemplo.com.br');

[9] Comentário enviado por pardalz em 21/01/2010 - 11:31h

amigão... pode me ajudar?


[11] Comentário enviado por pardalz em 21/01/2010 - 17:11h

respondi la..


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts