The FreeBSD FAQ - The Power to Help
The FreeBSD FAQ - The Power to Help
This site is Powered by PAR Teleon

S E Ç Õ E S
B U S C A
+
D E S T A Q U E
CONTATO
PÁGINA ANTIGA
TELEON INTERNET
E N Q U E T E
Se apos a conclusao, a traducao da documentacao oficial do FreeBSD, fosse impressa em livro, voce:

Usaria apenas a documentacao na internet como referencia.Faria o download de toda a documentacao na internet e imprimiria eu mesmo.
Compraria o livro, para te-lo em maos, mas usaria a referencia na internet com maior frequencia do que o livro.Compraria o livro, e seria minha unica referencia.
Compraria varias copias do livro e daria de presente a varias pessoas que deveriam ser devidamente catequisadas.







Jean M. Melo © - 2001
Todos os direitos reservados






H O W   T O 


Índice


16/05/06 10:36 - Instalação de servidor de email com QMAIL usando o ports do FREEBSD


Carlos A. Talhati e Renato Botelho


FREEBSD xxx.xxx.br 6.1-RELEASE FreeBSD 6.1-RELEASE #3: Wed May 10 19:18:56 BRT 2006
root@xxx.xxx.br:/usr/obj/usr/src/sys/xxx.xxx.br  i386

Antes de começar uma nova instalação é aconselhavél atualizar sua arvore do ports. 
O FREEBSD a partir da versão 5.5 diponibilizou um recurso chamado portsnap. 
Com ele é possível manter a arvore do ports atualizada.

Deve demorar um pouco, são aproximandamente 40MB o download do portsnap (fetch), em seguida deve 
se descompactar o ports e depois atualizar. Esse procedimento (extract) e o fetch de 40Mb acontece
 apenas na primeira vez, nas proximas basta um portsnap fetch update

 # portsnap fetch
 # portsnap extract
 # portsnap updade

Também é seguro habilitar a checagem de vulnabilidades dos ports antes de instalar. 
Para isto instale o portaudit.

# cd /usr/ports/security/portaudit
# make install clean
# /usr/local/sbin/portaudit -Fda

Antes de instalar o QMAIL com o pacote do SPAMCONTROL conheça as opções disponiveis 
neste port e não deixe de ler o documento : http://www.fehcom.de/qmail/spamcontrol/README_spamcontrol.html

Tela de Instalação


RELAYMAILFROM : Define que pode enviar email a partir de seu servidor. 
Mais seguro usar autenticação SMTP.
QUITASAP : Fecha uma seção SMTP no caso de violação do filtro (violação SMTP RFC)
REQBRACKETS : Requer que o endereço de email contenha o caracter "<" e ">", por exemplo .
VERP : Utiliza Return-Path por usuário (VERP - Variable Envelope Return Paths). 
Isto faz com que qmail-inject adicione cada endereço de recipiente no sender da cópia da mensagem que está indo para este usuário.
RECIPIENT550 : Em caso de não encontrar o usuário de email, em vez de devolver que o mesmo não existe (550) envia uma mensagem de ocupado (450)
LOCALFREQAUTH : Requer autenticação quando email vier de seu proprio domonio ( @ seu dominio)
AUTHCRAM : Suporte adicional para CRAM-MD5.
MOREIPME : Scott Gifford's additional control files moreipme and notipme
BIGTODO : Bruce Guenter's BigToDo patch
RCDLINK : Cria "script" qmail.sh em seu diretorio rc.d

# cd /usr/ports/mail/qmail-spamcontrol
# make config
# make install clean

Habilitar o QMAIL como padrão

# /var/qmail/scripts/enable-qmail

Antes é aconselhavel adcionar estas linhas no /etc/make.conf

# Define qual slaveport do qmail sera usado
QMAIL_SLAVEPORT=spamcontrol

Verificar se o arquivo /etc/mail/mailer.conf esta correto como abaixo:

sendmail	/var/qmail/bin/sendmail
send-mail	/var/qmail/bin/sendmail
mailq		/var/qmail/bin/qmail-qread
newaliases	/var/qmail/bin/newaliases
hoststat	/var/qmail/bin/qmail-tcpto
purgestat	/var/qmail/bin/qmail-tcpok

Verificar se a variavel sendmail_enable="NONE" foi adicionada no final do /etc/rc.conf
Instalar o UCSPI-TCP

# cd /usr/ports/sysutils/ucspi-tcp
# make install clean

Não esqueça de selecionar o patch RSS_DIFF

A opcao SSL, ela somente é necessaria se for montar um pop3 e/ou um smtp com SSL



Instalação do DAEMONTOOLS

# cd /usr/ports/sysutils/daemontools
# make install clean

Criação do daemontools em /var/qmail/service usando o qmail-conf
Instalação do QMAIL-CONF

# cd /usr/ports/mail/qmail-conf
# make install clean

Habilitando o serviço POP3D

# /var/qmail/bin/qmail-pop3d-conf /usr/local/vpopmail/bin/vchkpw qmaill /var/qmail/service/pop3d
# cd /var/qmail/service/pop3d/
# ee tcp
:allow
# make

Habilitando o serviço SMTP

# /var/qmail/bin/qmail-smtpd-conf qmaild qmaill /var/qmail/service/smtpd

Criação do script do smtpd que usará autenticação e veriricação de spam em blacklists.

# cd /var/qmail/service/smtpd
# cat run
  ####################################
  #!/bin/sh
  exec 2>&1 \
  envdir ./env \
  sh -c '
  case "$REMOTENAME" in h) H=;; p) H=p;; *) H=H;; esac
  case "$REMOTEINFO" in r) R=;; [0-9]*) R="t$REMOTEINFO";; *) R=R;; esac
  exec \
  envuidgid qmaild \
  softlimit ${DATALIMIT+"-d$DATALIMIT"} \
  /usr/local/bin/tcpserver \
  -vDU"$H$R" \
  ${LOCALNAME+"-l$LOCALNAME"} \
  ${BACKLOG+"-b$BACKLOG"} \
  ${CONCURRENCY+"-c$CONCURRENCY"} \
  -xtcp.cdb \
  -- "${IP-0}" "${PORT-25}" \
  /usr/local/bin/rblsmtpd -r bl.spamcop.net \
  /var/qmail/bin/qmail-smtpd /usr/local/vpopmail/bin/vchkpw /usr/bin/true
  ' 
  #######################################################

DELIVERY: Crie um script /var/qmail/rc com o seguinte conteudo:

 # cd /var/qmail
 # ee rc
 #######################################################
   #!/bin/sh
   exec env - PATH="/var/qmail/bin:$PATH" \
   qmail-start ./Maildir/ /usr/local/bin/multilog t /var/log/qmail qmaill
 #######################################################
 # chmod 750 /var/qmail/rc
 # /var/qmail/bin/qmail-delivery-conf qmaill /var/qmail/service/qmail

Criação do diretorio de log do QMAIL

 # mkdir /var/log/qmail
 # chmod 750 /var/log/qmail
 # chown qmaill /var/log/qmail

Configurando o DAEMONTOOLS

 # mkdir /var/service
 # cd /var/service
 # ln -s /var/qmail/service/pop3d
 # ln -s /var/qmail/service/smtpd
 # ln -s /var/qmail/service/qmail

Redirecionando os emails

 # echo seuemail@seudominio.com.br > /var/qmail/alias/.qmail-root
 # echo seuemail@seudominio.com.br > /var/qmail/alias/.qmail-postmaster
 # echo seuemail@seudominio.com.br > /var/qmail/alias/.qmail-mailer-daemon
 # ln -s .qmail-postmaster /var/qmail/alias/.qmail-abuse
 # chmod 644 /var/qmail/alias/.qmail-root /var/qmail/alias/.qmail-postmaster

Antes não esqueça de verificar no rc.conf se contem a linha: svscan_enable="YES"
Instalação do VPOPMAIL para criação de domínios virtuais.

Antes é aconselhavel adcionar estas linhas no /etc/make.conf

# Vpopmail
.if ${.CURDIR:N*mail/vpopmail}==""
 RELAYCLEAR=40
 DEFAULT_DOMAIN=seudominio.com.br
 WITH_IP_ALIAS=yes
 WITH_SUID_VCHKPW=yes
 WITH_SMTP_AUTH_PATCH=yes
.endif

Instalação do VPOPMAIL

# cd /usr/ports/mail/vpopmail
# make install clean

Criando dominio e usuarios

# /usr/local/vpopmail/bin/vadddomain seudominio-virtual.com.br suasenha

Verifica se criou corretamente

# ll /usr/local/vpopmail/domains/

Cria usuario usuario@seudominio-virtual.com.br com quota=15000 bytes, com comentario "Usuario da diretoria" e senha suasenha

# /usr/local/vpopmail/bin/vadduser -q 15000 -c "Usuario da diretoria" usuario@seudominio-virtual.com.br suasenha

Verifica se criou corretamente

# /usr/local/vpopmail/bin/vuserinfo usuario@seudominio-virtual.com.br


Vamos instalar agora o Anti-spam e o Anti-virus utilizando o QMAIL-SCANNER

Antes é aconselhavel adcionar estas linhas no /etc/make.conf

# CLAMAV User / Group
.elif ${.CURDIR:N*security/clamav}==""
 CLAMAVUSER=qscand
 CLAMAVGROUP=qscand
.endif

# maildrop
.elif ${.CURDIR:N*mail/maildrop}==""
 MAILDROP_SUID=vpopmail
 MAILDROP_SGID=vchkpw
.endif
    
# Precisa do suidperl pro qmail-scanner
.elif ${.CURDIR:N*lang/perl5*}==""
 ENABLE_SUIDPERL=yes
.endif
    
# Qmail-scanner
.elif ${.CURDIR:N*mail/qmail-scanner*}==""
 QMAILSCAN_ADMIN=emaildoadm@seudominio.com.br
 QMAILSCAN_ADMINREALNAME="Nome_de_sua_empresa"
 QMAILSCAN_LOCALDOMAINS="seudominio.com.br"
 QMAILSCAN_NOTIFY="psender,nmladm"
 QMAILSCAN_SCANNERS="clamdscan,verbose_spamassassin"
 QMAILSCAN_LANG=pt_BR
.endif  


Instalação do ANTISPAM

Configuração do Spamassassim



 # cd /usr/ports/mail/p5-Mail-SpamAssassin
 # make install clean

Para que a instalaçao do Anti-virus (CLAMAV) seja efetuada de forma correta, é necessário que o usuário "qscand" esteja criado. Quem faz a criação deste usuário é o QMAIL-SCANNER. O QMAIL-SCANNER para instalar precisa que o anti-virus ja esteja instalado, portanto aqui nesta linha vamos dizer ao QMAIL-SCANNER para somente criar o usuário de forma correta e não prosseguir com a instalação. Assim instalamos o CLAMAV de forma correta e depois o QMAIL-SCANNER.

 # /usr/bin/env PKG_PREFIX=/usr/local /bin/sh /usr/ports/mail/qmail-scanner/pkg-install qmail-scanner PRE-INSTALL 

Instalação do ANTIVIRUS

Configuração do Anti-virus



 # cd /usr/ports/security/clamav
 # make install clean

Não se esqueça de adicionar em seu rc.conf as linhas abaixo

# Liga/Desliga o spamd
  spamd_enable="YES"
  spamd_flags="-c -d -r /var/run/spamd.pid --socketpath=/var/run/spamd.socket --socketowner=qscand --socketgroup=qscand"
# clamav
  clamav_clamd_enable="YES"
  clamav_freshclam_enable="YES"

Também é necessário que o spamd esteja rodando antes de instalar o QMAIL-SCANNER senão ele usa o spamassassim, para isto faça :

# /usr/local/etc/rc.d/sa-spamd.sh start

Instalação do QMAIL-SCANNER

 
 # cd /usr/ports/mail/qmail-scanner/
 # make install
 # /usr/local/bin/qmail-scanner-queue.pl -z

Se necessário aumente o valor do softlimit para algo em torno de 4000000. Geralmente um valor baixo gera um erro QQ 403

 # ee /var/qmail/service/smtpd/env/DATALIMIT

Ajustes em quem deve enviar email do seu servidor de forma autenticada e verificando a existencia de virus e spam.

# ee /var/qmail/service/smtpd/tcp

127.:allow,RELAYCLIENT="",RBLSMTPD="",QMAILQUEUE="/usr/local/bin/qmail-queue"
10.0.0.:allow,RBLSMTPD="",QMAILQUEUE="/usr/local/bin/qmail-scanner-queue.pl"
172.16.:allow,RBLSMTPD="",REQUIREAUTH="",QMAILQUEUE="/usr/local/bin/qmail-scanner-queue.pl"
:allow,RBLSMTPD="",QMAILQUEUE="/usr/local/bin/qmail-scanner-queue.pl"

Após a alteração execute o comando make

REQUIREAUTH : se ela for setada, não entrará nenhum email sem autenticação(auth), 
somente serve para smtpd, se for um mx não pode de maneira alguma pois os outros smtps nao 
poderao enviar emails para seus usuários

Alguns exemplos de conexões

0.0.0.0:allow,RBLSMTPD="TEST_LIST test illegal addr-to-be-treated-as-hostname [0.0.0.0]"
0.1.2.3:allow,RBLSMTPD="TEST_LIST test illegal addr-to-be-treated-as-hostname [0.1.2.3]" 
255.255.255.255:allow,RBLSMTPD="TEST_LIST test illegal addr-to-be-treated-as-hostname [255.255.255.255]"
# Exemplo de blacklist por reverso
=.dialuol.com.br:allow,RBLSMTPD="BLOQUEADO / BLOCKED"
# Conexoes normais
:allow,BADMIMETYPE="",REQBRACKETS="",TARPITCOUNT="10",TARPITDELAY="10",HELOCHECK=".",LOCALMFCHECK=""

BADMIMETYPE, isso eh pra vc bloquear anexos pelo mime type

# cd /var/qmail/control
# ee badmimetypes

TVqAAAEAA
TVqQAAMAA
TVpQAAIAA
TVpAALQAc
TVpyAXkAX
TVrmAU4AA
TVrhARwAk
TVoFAQUAA
TVoAAAQAA
TVoIARMAA
TVouARsAA
TVrQAT8AA
TVrvAEQAe
# MyDoom (*.zip)
# UEsDBAoAA
# *.zip
# UEsDBAkAA
# *.z (gnu-zip)
# H4sIADWWb
# double Base 64 Windows Executable
VFZxUUFBT
# triple Base 64 Windows Executable
VkZaeFVVR
# Pif File
TVoAAAEAA
# VBS Files
ZGltIGZpb
# RAR Files
# UmFyIRoHA

Após qualquer alteração no arquivo acima é necessario executar o arquivo /var/qmail/bin/qmail-badmimetypes para que o arquivo cdb seja recriado.

A variável TARPIT$ (TARPITCOUNT) define o número de destinatarios seguidos, ele vai fazer um delay de ${TARPITDELAY} segundos isso dificulta a vida de spammers

A variável HELOCHECK="." é útil no caso de algum usuário passar alguma informação no campo HELO. Abaixo alguns exemplos extraidos do manual do SPAMCONTROL

HELOCHECK="": evaluate badhelo  control file
HELOCHECK="!": reject session, if no HELO/EHLO greeting is provided/empty.
HELOCHECK=".": reject session, if no HELO/EHLO greeting is provided/empty and evaluate badhelo control file
HELOCHECK="=": require that the HELO/EHLO greeting corresponds to the FQDN of the host.
HELOCHECK="A": DNS A lookup for the HELO/EHLO greeting and evaluate badhelo.
HELOCHECK="M": DNS MX lookup for the HELO/EHLO greeting and evaluate badhelo. 

A variável LOCALMFCHECK="" é útil quando um usuário autentica o From que tem que ser @aqueledominio, isso evita que algum usuário interno envie spam ou entao se algum spammer conseguir a senha de um usuário.

Configurando o SPAMASSASSIN

Após esta instalação é interessante que seja criado um diretorio .spamassassin no /usr/local/qmailscan

Depois que o diretório foi criado, crie um link simbólico user_prefs apontando para a configuração do spamassassin (local.cf)

# cd /usr/local/qmailscan
# mkdir .spamassassin
# cd .spamassassin
# mv /usr/local/etc/mail/spamassassin/local.cf.sample /usr/local/etc/mail/spamassassin/local.cf
# ln -s usr/local/etc/mail/spamassassin/local.cf user_prefs
# cd ..
# chown -R qscand:qscand .spamassassin

Agora não se esqueça de inicialiar os serviços instalados.

# /usr/local/etc/rc.d/clamav-clamd start
# /usr/local/etc/rc.d/clamav-freshclam start
# /usr/local/etc/rc.d/sa-spamd start
# /usr/local/etc/rc.d/svscan.sh start

Abaixo para conferencia os dois arquivos que foram modificados durante a instalação

# cat /etc/rc.conf

sendmail_enable="NONE"
svscan_enable="YES"

# Liga/Desliga o spamd
spamd_enable="YES"
spamd_flags="-c -d -r /var/run/spamd.pid --socketpath=/var/run/spamd.socket --socketowner=qscand --socketgroup=qscand"

# clamav
clamav_clamd_enable="YES"
clamav_freshclam_enable="YES"

# cat /etc/make.conf

# Define qual slaveport do qmail sera usado
QMAIL_SLAVEPORT=spamcontrol

# Vpopmail
.if ${.CURDIR:N*mail/vpopmail}==""
RELAYCLEAR=40
DEFAULT_DOMAIN=iqsc.usp.br
WITH_IP_ALIAS=yes
WITH_SUID_VCHKPW=yes
WITH_SMTP_AUTH_PATCH=yes

# CLAMAV User / Group
.elif ${.CURDIR:N*security/clamav}==""
CLAMAVUSER=qscand
CLAMAVGROUP=qscand

# maildrop
.elif ${.CURDIR:N*mail/maildrop}==""
MAILDROP_SUID=vpopmail
MAILDROP_SGID=vchkpw

# Precisa do suidperl pro qmail-scanner
.elif ${.CURDIR:N*lang/perl5*}==""
ENABLE_SUIDPERL=yes

# Qmail-scanner
.elif ${.CURDIR:N*mail/qmail-scanner*}==""
QMAILSCAN_ADMIN=servidores@iqsc.usp.br
QMAILSCAN_ADMINREALNAME="Instituto_de_Química_de_São_Carlos"
QMAILSCAN_LOCALDOMAINS="mail2.iqsc.usp.br"
QMAILSCAN_NOTIFY="psender,nmladm"
QMAILSCAN_SCANNERS="clamdscan,verbose_spamassassin"
QMAILSCAN_LANG=pt_BR

# Qmailadmin
.elif ${.CURDIR:N*mail/qmailadmin}==""
WITH_DOMAIN_AUTOFILL=yes
WITH_MODIFY_QUOTA=yes
CGIBINDIR="/usr/local/www/apache22/cgi-bin"
WEBDATADIR="/usr/local/www/apache22/data"

.endif

# added by use.perl 2006-05-03 15:39:06

PERL_VER=5.8.8
PERL_VERSION=5.8.8


Pronto seu servidor esta pronto para enviar e receber email com segurança e "patricamente" livre de spam e virus.

Para facilitar o trabalho de manutenção de dominios e usuários, vamos agora instalar o QMAILADMIN, 
um aplicativo que permite que os dominios e usuários virtuais do VPOPMAIL sejam criados através da WEB. 
Para isto voce deverá ter o APACHE instalado e rodando em seu servidor. Uma outra opção interessante 
sera  usar o LIGHTTPD. O Lighttpd foi desenvolvido para ser  um servidor rápido, seguro, compatível e flexivel.
Possui suporte a virtualhost, url-rewrite, large  files, fastcgi, cgi, ssi, php e varios outros.

Antes é aconselhavel adcionar estas linhas no /etc/make.conf

# Qmailadmin
.elif ${.CURDIR:N*mail/qmailadmin}==""
  WITH_DOMAIN_AUTOFILL=yes
  WITH_MODIFY_QUOTA=yes
  CGIBINDIR="/usr/local/www/apache22/cgi-bin"
  WEBDATADIR="/usr/local/www/apache22/data"
.endif

Instalando o QMAILADMIN

 # cd /usr/ports/mail/qmailadmin
 # make install clean

Algumas telas do QMAILADMIN. Com ele a manutenção de dominios e usuários 
se torna muito facíl e intuitiva. No QMAILADMIN, os usuários podem por exemplo 
colocarem mensagens 
de férias ou redirecionar sua conta para outra, trocar senha.

Administração do Qmailadmin



Administração do Qmailadmin



Administração do Qmailadmin



Super dicas

- Em nenhuma hiótese coloque espaço em branco na variável QMAILSCAN_ADMINREALNAME="Nome_de_sua_empresa" do make.conf

- Não poderá haver espaços em branco antes do .elif e .endif no make.conf

- Nas variaveis do diretorio /var/qmail/service/smtpd/env/, não poderá haver espaços adicionais ou comentários

- Para quem usa o vpopmail e quer que todos os dominios fiquem no vpopmail a variável /var/qmail/control/locals deve ficar vazia.
Algumas configurações adicionais para a manutenção do seu servidor de email

- Limitar o tamanho do email em 10MB

# echo "10000000" > /var/qmail/control/databytes

- Definir tempo de spool. Define o número máximo em segundos que uma mensagem pode ficar na fila do qmail. Depois desse tempo, qmail-send 
tentará entregar a mensagem mais uma vez e tratará qualquer outro erro, como um erro permanente. Padrão: 604800 (uma semana). Utilizado por: qmail-send.

# echo "604800" > /var/qmail/control/queuelifetime

- Recusar spam

# echo "spammeur@spam" > /var/qmail/control/badmailfrom

- Verificar Logs

# tail /var/qmail/service/smtpd/log/main/current | tai64nlocal
# tail /var/qmail/service/pop3d/log/main/current | tai64nlocal
# tail /var/log/qmail/current | tai64nlocal
# tail /var/log/clamav/clamd.log | tai64nlocal

- Verificar estatisticas

# /var/qmail/bin/qmail-qstat
# /var/qmail/bin/qmail-qread | grep remote | grep -v done

- Ajustes para alteração do subject da mensagem que for classificada como SPAM

# ee /usr/local/etc/mail/spamassassin/local.cf
  Definir [SPAM] no subject, alterar a linha -> rewrite_header Subject *****SPAM*****

- Verificar os serviços que estão rodando

# svstat /var/service/* /var/service/*/log

Isso é tudo ppessoal :-)
15/05/2006

Este artigo foi escrito com a intenção de facilitar a instalaçao de um serviço muito util que é o envio de email. O objetivo principal é torna-lo uma ferramenta segura e de facil manutenção através do uso do ports do FREEBSD.

- Carlos A. Talhati (cat at SWCat dot com)
- Renato Botelho (garga at FREEBSD dot org)

O Arquivo original encontra-se em http://www.swcat.com/artigos/freebsd/artigo002.php

Carlos A. Talhati e Renato Botelho




Entrar em contato Enviar este artigo a um amigo Preparar para impressão Índice Topo da página


 

PrincipalBusca AvançadaEnqueteContatoTeleon Internet  
Enquetes antigas | FAQ | FreeBSD Desktop | Informacoes | Links | How To