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.800 ]

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


Filtragem de conteúdo (Spamassassin + ClamAV + Amavisd-new)



Aqui vamos falar sobre as filtragens que vamos fazer. Como no esquema abaixo:
Instalando os pacotes necessários, lembrando que todos eles estão dentro de /usr/ports. Basta entrar no diretório e digitar "make install clean", Como no exemplo abaixo:

# cd /usr/ports/archivers/p5-Compress-Raw-Zlib/
# make install clean

archivers/p5-Compress-Raw-Zlib/
archivers/p5-IO-Compress-Base/
archivers/p5-IO-Compress-Zlib/
archivers/p5-Compress-Zlib/
archivers/p5-IO-Zlib/
archivers/p5-Archive-Tar/
archives/arc
archives/lha
archives/unzip
archives/zoo
archives/unarj
archives/unrar
archives/cabextract
archives/freeze
archives/lzo
archives/lzop
archives/p5-Archive-Zip
archives/ripole
converters/p5-Convert-BinHex
converters/p5-Convert-TNEF
converters/p5-Convert-UUlib
converters/rpm2cpio
devel/re2c
devel/p5-IO-String/
devel/p5-Algorithm-Diff/
devel/libidn
devel/gmp
textproc/p5-Text-Diff
net/p5-Net-CIDR
net/p5-Net-IP
net/p5-Net-DNS
security/p5-Digest-SHA1
net/p5-Sys-Hostname-Long/
www/p5-URI
mail/p5-Mail-SPF-Query
net/p5-Socket6
net/p5-IO-INET6
net/curl
security/gnupg
security/p5-Crypt-SSLeay
security/p5-Net_SSLeay
security/p5-IO-Socket-SSL
www/p5-HTML-Parser
www/p5-HTML-Tagset
www/libghttp
www/p5-HTTP-GHTTP/
www/p5-libwww
mail/p5-Mail-SpamAssassin
security/clamav
devel/p5-Net-Server
sysutils/p5-Unix-Syslog
mail/amavisd-new

Bom, depois de todos esses pacotes instalados, vamos agora para a melhor parte, configurar os aplicativos.

Spamassassin

Edite o arquivo /etc/mail/spamassassin/local.cf e altere pra ficar da seguinte forma:

rewrite_header	Subject	***** SPAM *****
report_safe	1
lock_method	flock
required_score	5.0

ClamAV

Nele vamos editar o arquivo freshclam.conf para atualização correr sempre bem, edite o arquivo /etc/freshclam.conf para ficar assim (Comente a linha que tenha escrito Example):

DatabaseDirectory	/var/db/clamav
DatabaseOwner		_clamav
DNSDatabaseInfo		current.cvd.clamav.net
DatabaseMirror		db.it.clamav.net
DatabaseMirror		database.clamav.net
MaxAttempts		3
checks			24

Salve e saia, depois crie o arquivo de log:

# touch /var/log/freshclam.log
# chow _clamav /var/log/freshclam.log


E agora faça a atualização:

# freshclam

Adicione no crontab com o comando "crontab -e" a seguinte linha:

* 23 * * * /usr/local/bin/freshclam >/dev/null 2>&1

Assim todos os dias as 23 horas ele vai executar o programa de atualização das assinaturas de vírus e tudo mais. Então assim vai se manter atualizado.

Agora edite o arquivo /etc/clamd.conf para ficar da seguinte forma:

DatabaseDirectory	/var/db/clamav
LocalSocket		/var/clamav/clamd.socket
User			_clamav

Faça o mesmo procedimento para a criação do arquivo de log do clamd que foi feito com o freshclam:

# touch /var/log/clamd.log
# chow _clamav /var/log/clamd.log


Adicione as seguintes linhas ao arquivo /etc/rc.local para que o clamd seja inicializado no boot do servidor:

if [ -x /usr/local/sbin/clamd ]; then
    echo -n ' clamd'
    [ -S /var/clamav/clamd.socket ] && rm -f /var/clamav/clamd.socket
    /usr/local/sbin/clamd >/dev/null 2>&1
fi

Amavisd-new

Vamos editar o arquivo /etc/amavisd.conf descomentando os seguintes "pedaços":

$max_servers = 2;
$daemon_user = '_clamav'; # Run under the same user as ClamAV
$daemon_group = '_clamav'; # Run under the same group as ClamAV

$mydomain = 'exemplo.com.br';

$MYHOME = '/var/amavisd';
$TEMPBASE = "$MYHOME/tmp"; # Working directory, needs to be created manually
$ENV{TMPDIR} = $TEMPBASE;
$QUARANTINEDIR = '/var/clamav/quarantine';

E mais embaixo no arquivo você vai encontrar informações a respeito do clamav, pode descomentar também. Como a linha abaixo (não esqueça de alterar a parte do socket):

@av_scanners = (
  ['ClamAV-clamd',
    \&ask_daemon, ["CONTSCAN {}\n", "/var/clamav/clamd.socket"],
    qr/\bOK$/, qr/\bFOUND$/,
    qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],
);

Mude as permissões:

# chown -R _clamav._clamav /var/amavisd/

Agora adicione ao arquivo /etc/rc.local as seguintes linhas para que ele seja iniciado no boot:

if [ -x /usr/local/sbin/amavisd ]; then
    echo -n ' amavisd'
    /usr/local/sbin/amavisd >/dev/null 2>&1
fi

Agora adicione ao arquivo /etc/postfix/master.cf as seguintes linhas:

smtp-amavis unix -   -   -   -   2  smtp
    -o smtp_data_done_timeout=1200
    -o smtp_send_xforward_command=yes
    -o disable_dns_lookups=yes
    -o max_use=20

127.0.0.1:10025 inet n   -   -   -   -  smtpd
    -o content_filter=
    -o local_recipient_maps=
    -o relay_recipient_maps=
    -o smtpd_restriction_classes=
    -o smtpd_delay_reject=no
    -o smtpd_client_restrictions=permit_mynetworks,reject
    -o smtpd_helo_restrictions=
    -o smtpd_sender_restrictions=
    -o smtpd_recipient_restrictions=permit_mynetworks,reject
    -o mynetworks_style=host
    -o mynetworks=127.0.0.0/8
    -o strict_rfc821_envelopes=yes
    -o smtpd_error_sleep_time=0
    -o smtpd_soft_error_limit=1001
    -o smtpd_hard_error_limit=1000
    -o smtpd_client_connection_count_limit=0
    -o smtpd_client_connection_rate_limit=0
    -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks

Agora recarregue o postfix:

# postconf -e 'content_filter=smtp-amavis:[127.0.0.1]:10024'
# postfix reload


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

Servidor web com CentOS + Apache

Apache2 + PHP + PostgreSQL + phpPgAdmin

Criando uma ISO bootável do OpenBSD

Instalando OpenBSD no vmware

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

Leitura recomendada

Reforçando a segurança do MTA Postfix com o Apolicy

Postfix fazendo relay SMTP do Gmail/Google Apps

Configurando o Korn

Montando um servidor de e-mail completo com Postfix

Servidor Postfix com Fedora Core 4

  
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