Bom a algum tempo prometi um tutorial do qmail, e aqui está o mesmo. Pois bem, não irei fazer uma descrição do qmail, nem quando foi criado e muito menos para que serve, creio que se você chegou a este tutorial deve saber mais ou menos do que se trata. Irei simplesmente mostrar como configurá-lo, juntamente com seus add-ons para que você tenha um servidor de emails completo e robusto (Há quem seja totalmente contrário a esta afirmação). Lembrando que esta instalação foi baseada no slackware 12.0.
Será instalado: ucspi-tcp + qmail + vpopmail + autorespond + ezmlm + daemontools + courier-imap + qmailadmin + sismcan + clamav + spamassassin + spamdyke.
Obs: Antes de prosseguir, verifique se você tem os seguintes pacotes instalados: autoconf, automake, binutils, bzip2, gcc, gcc-g++, gdbm, glibc, gzip, make, openssl, patch, perl, zlib.
Vamos primeiramente criar os diretórios onde serão baixados os sources:
mkdir -p /usr/src/qmailsource/patches cd /usr/src/qmailsource
Fazendo o download dos pacotes necessários:
wget http://www.qmail.org/qmail-1.03.tar.gz wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz wget http://www.inter7.com/devel/ezmlm-0.53-idx-0.41.tar.gz wget http://www.inter7.com/devel/autorespond-2.0.5.tar.gz wget http://ufpr.dl.sourceforge.net/sourceforge/vpopmail/vpopmail-5.4.25.tar.gz wget http://ufpr.dl.sourceforge.net/sourceforge/qmailadmin/qmailadmin-1.2.11.tar.gz wget http://ufpr.dl.sourceforge.net/sourceforge/courier/courier-authlib-0.60.2.tar.bz2 wget http://ufpr.dl.sourceforge.net/sourceforge/courier/courier-imap-4.3.1.tar.bz2 wget http://ufpr.dl.sourceforge.net/sourceforge/qmhandle/qmhandle-1.2.0.tar.gz wget http://ufpr.dl.sourceforge.net/sourceforge/simscan/simscan-1.4.0.tar.gz wget http://www.pldaniels.com/ripmime/ripmime-1.4.0.7.tar.gz wget http://ufpr.dl.sourceforge.net/sourceforge/clamav/clamav-0.92.1.tar.gz wget http://www.spamdyke.org/releases/spamdyke-3.1.6.tgz
E os patches:
cd /usr/src/qmailsource/patches wget http://www.claudioborges.org/patches/readme-qmail-1.03-but3k4-v01-release.txt wget http://www.claudioborges.org/patches/qmail-1.03-but3k4-v01-release.patch wget http://www.claudioborges.org/patches/qmail-1.03-chkuser-2.0.8-v01-release.patch wget http://www.claudioborges.org/patches/ucspi-tcp-0.88.a_record.patch wget http://www.claudioborges.org/patches/ucspi-tcp-0.88.errno.patch wget http://www.claudioborges.org/patches/ucspi-tcp-0.88.nodefaultrbl.patch wget http://www.claudioborges.org/patches/daemontools-0.76.errno.patch wget http://www.claudioborges.org/patches/simscan-1.4.0.patch wget http://www.claudioborges.org/patches/clamav-0.92.1.patch
Com todos os pacotes baixados, vamos dar continuidade a instalação.
O ucspi-tcp é um programa que gerencia a inicialização do qmail.
cd /usr/src/qmailsource tar xvzf ucspi-tcp-0.88.tar.gz cd ucspi-tcp-0.88 patch -p1 <../patches/ucspi-tcp-0.88.a_record.patch patch -p1 <../patches/ucspi-tcp-0.88.errno.patch patch -p1 <../patches/ucspi-tcp-0.88.nodefaultrbl.patch make make setup check
Existem inúmeros patches para o qmail (essa é uma grande vantagem dele) e caso não exista (e você programe em C) e você mesmo pode fazer seus próprios patches (coisa que particularmente faço, quando tenho tempo =P). Meu patch é a união de vários patches que acho necessário e para entender melhor o funcionamento, bem como tudo que foi incluido no mesmo, sugiro que dê uma lida no readme, ele está em inglês. Para os que não querem ler o readme, aqui vai uma breve descrição deles.
Necessário para compilar o qmail em sistemas com glibc atual.
Corrige um bug do qmail-local.
Corrige um problema em sistemas linux que reconhecem 0.0.0.0 como ip local.
Adiciona a flag -f ao sendmail que vem junto com o qmail.
Aceita você chamar uma queue externa via variável de ambiente (necessário para o simscan e/ou qmail-scanner funcionar).
Você pode configurar um delay de X segundos quando Y mensagens forem recebidas, uma espécie de anti-spam. É necessário que sejam criados os arquivos /var/qmail/control/tarpitcount e /var/qmail/control/tarpitdelay que são respectivamente a quantidade de mensagens que seu servidor pode receber sem fazer delay e o delay que ele vai dar para cada mensagem que ultrapassar este limite.
Necessário para usar a opção enable-custom-smtp-reject do simscan.
Corrige um problema de quota no qmail-pop3d e qmail-local.
Muda o número de mensagens retornadas no qmail-pop3d. Ele aplica a RFC 1939.
Modifica o qmail-local para exibir a mensagem 'quota exceeded' quando a quota for atingida.
Coloca o qmail para trabalhar de acordo com a RFC-2821, que faz com que ele liste todos os MX por ordem de preferência.
Faz com que o qmail use o timezone local do servidor.
Corrige um problema de dns.
Aceita o qmail usar um concurrency maior que 240.
Cria subdiretórios dentro do diretório qmail/queue/todo. Isso ajuda no processamento de grandes quantidades de mensagens.
Corrige alguns problemas com a queue do qmail, quando há um alto número de mensagens a serem processadas.
Faz com que o qmail verifique se o domínio do remetente é valido ou não. Você pode definir a variável de ambiente MFCHECK ou criar o arquivo /var/qmail/control/mfcheck com um valor booleano (0 desativa e 1 ativa).
Faz com que o qmail não aceite double bounce.
Aceita você controlar o tamanho das mensagens bounce. Você pode criar um arquivo /var/qmail/control/bouncemaxbytes e colocar o valor em bytes.
Esse é muito bom, deixa obsoleto o meu tutorial de conta pega tudo :~. Através do arquivo /var/qmail/taps, você faz com que toda mensagem enviada e recebida para uma determinada conta ou domínio, seja enviada para uma conta específica. Ex: echo "secretaria@dominio:diretoria@dominio" > /var/qmail/taps. Isto faz com que TODO email enviado e recebido pela secretaria@dominio, o diretoria@dominio receberá uma cópia da mensagem.
Faz com que o qmail-remote mostre o email do destinatário nos logs. Muito útil para identificação de mensagens enviadas.
Este patch como o próprio nome diz, modifica o qmail-remote para enviar mensagens de um modo mais rápido.
Altera o qmail-remote para trabalhar de acordo com a RFC 821.
Adiciona a possibilidade de usar expressões regulares nos arquivos badmailfrom, badmailfromnorelay, badrcptto, badrcpttonorelay e badhelo.
Aceita voce limitar a quantidade de destinatários que são especificados em cada mensagem. Para limitar a quantidade de destinatários, crie o arquivo /var/qmail/control/maxrcpt com a quantidade de destinatários que você quer limitar, ex: echo 20 > /var/qmail/control/maxrcpt irá limitar em 20 destinatários, quando chegar no 21 destinatário ele vai dar erro.
Fiz uma alteracão nele para que quando um email esta definido no arquivo /var/qmail/control/maxrcptusers este limite nao terá validade sobre o mesmo.
Ativa a opção se exigir ou não helo. Para habilitar esta checagem, use a variável de ambiente HELOREQ ou crie o arquivo /var/qmail/control/heloreq com um valor booleado (0 desativado e 1 ativado).
Adiciona suporte a spf. Não explicarei como funciona o spf, consulte o google que você encontrará inúmeros artigos falando a respeito. Para ativá-lo, você precisa usar a variável de ambiente SPFBEHAVIOR ou colocar um valor booleano (de 0 a 6) no arquivo /var/qmail/control/spfbehavior. O melhor valor recomendável é 3.
Adiciona suporte a tls/ssl ao qmail, encriptando e autenticando conexões smtp entre o MTA e o MUA. Ele também implementa as RFC 3207 e 2487.
Adiciona suporte a smtp autenticado ao qmail.
Este patch quando habilitado exige que domínios locais usem autenticação para fazer relay. É definido pela variável de ambiente AUTHREQ ou via arquivo /var/qmail/control/authreq (valor booleano 0 ou 1).
Para que o qmail funcione perfeitamente, é preciso criar alguns usuários e grupos, pois cada processo dele roda sob um determinado usuário.
groupadd nofiles useradd -g nofiles -d /var/qmail/alias -s /bin/false alias useradd -g nofiles -d /var/qmail -s /bin/false qmaild useradd -g nofiles -d /var/qmail -s /bin/false qmaill useradd -g nofiles -d /var/qmail -s /bin/false qmailp groupadd qmail useradd -g qmail -d /var/qmail -s /bin/false qmailq useradd -g qmail -d /var/qmail -s /bin/false qmailr useradd -g qmail -d /var/qmail -s /bin/false qmails
mkdir /var/qmail /etc/qmail ln -s /etc/qmail /var/qmail/control
Esta é a melhor parte =P.
cd /usr/src/qmailsource tar xvzf qmail-1.03.tar.gz cd qmail-1.03 patch -p0 <../patches/qmail-1.03-but3k4-v01-release.patch make setup check ./config-fast maquina.dominio
Obs: Não esqueça de trocar o maquina.dominio pelo hostname completo do seu servidor. Ex: ./config-fast mail.ung.br
Ainda dentro do diretório do source do qmail, iremos criar o certificado tls que será usado no smtp autenticado (falaremos sobre isso na sessão vpopmail). Na criação do certificado ele irá fazer algumas perguntas, segue abaixo um exemplo:
root@mail:/usr/src/qmailsource/qmail-1.03# make cert Generating a 1024 bit RSA private key ........++++++ ........++++++ writing new private key to '/var/qmail/control/servercert.pem' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:BR State or Province Name (full name) [Some-State]:Sao Paulo Locality Name (eg, city) []:Guarulhos Organization Name (eg, company) [Internet Widgits Pty Ltd]:Universidade Guarulhos Organizational Unit Name (eg, section) []:UnG Common Name (eg, YOUR name) []:mail.ung.br Email Address []:suporte@ung.br root@mail:/usr/src/qmailsource/qmail-1.03#
Com base no exemplo anterior, você irá criar o seu certificado, caso tenha dúvida, segue abaixo uma breve descrição de cada campo:
Agora criando o certificado.
make cert make tmprsadh
O comando make tmprsadh irá criar os arquivos RSA e DH, usados também no smtp autenticado.
O alias são como se fossem contas de email, só que apontam para um endereço, ou seja existem virtualmente. Para que caso seu servidor envie mensagens de erro ou alguém queira entrar em contato é necessário criar alguns alias.
cd ~alias echo 'administrador@dominio' > .qmail-abuse ln -s .qmail-abuse .qmail-mailer-daemon ln -s .qmail-abuse .qmail-postmaster ln -s .qmail-abuse .qmail-root chmod 0644 ~alias/.qmail*
Obs: Não esquecer de trocar administrador@dominio por um email válido.
Para o perfeito funcionamento do seu sistema, precisamos criar um link para o sendmail.
mv /usr/lib/sendmail /usr/lib/sendmail.OLD mv /usr/sbin/sendmail /usr/sbin/sendmail.OLD ln -sf /var/qmail/bin/sendmail /usr/lib/sendmail ln -sf /var/qmail/bin/sendmail /usr/sbin/sendmail
O vpopmail é quem vai gerenciar os domínios virtuais, ou seja, toda a parte de caixas postais, alias e quotas é feita por ele, sem a necesidade de ter usuários cadastrados no sistema (sistema que falo, no /etc/passwd).
Existem dois métodos para se obter relay, o smtp autenticado ou relay after pop. Iremos usar a primeira opção. Para que você entenda melhor, segue abaixo uma pequena explicação sobre os dois métodos:
para enviar emails o usuário precisa configurar seu login e senha nas opções de smtp do seu cliente de emails, assim o relay (que é a permissão para enviar emails para qualquer domínio) estará disponivel. Este método é bem mais prático, além de ser bem mais seguro pois utiliza tls para fazer a encriptação dos dados.
para enviar emails, o usuário precisa fazer uma conexão pop antes, assim seu ip fica liberado para efetuar relay por X minutos. Digamos que o relay fica liberado por 30 minutos, após este tempo se precisar enviar emails novamente o usuário precisa efetuar uma nova autenticação pop.
O vpopmail também precisa de um usuário específico, sendo assim vamos criá-lo.
groupadd -g 89 vchkpw useradd -g vchkpw -u 89 -d /var/vpopmail -s /bin/false vpopmail
Quando criamos o certificado ssl, o dono/grupo sob o qual ele é criado é o do usuário qmaill, como nosso smtpd vai rodar sob o usuário vpopmail, precisamos mudar para este usuário, caso contrário o seu smtpd não irá funcionar.
find /var/qmail/control/ -type f -uid `id -u qmaild` -exec chown vpopmail:vchkpw {} \;
Muitos não sabem mais o homedir do vpopmail é verificado pelo usuário, ou seja, na hora de compilar ele verifica qual o homedir que foi definido para seu usuário.
mkdir -p /var/vpopmail/etc cd /usr/src/qmailsource tar xvzf vpopmail-5.4.25.tar.gz cd vpopmail-5.4.25
Esta parte deixei a critério de quem for usar, eu particularmente prefiro usar com MySQL, pois fica mais fácil de gerenciar.
Obs: Nem preciso dizer que se você for usar MySQL precisa tê-lo instalado certo?
Com suporte a MySQL use:
./configure --enable-auth-module=mysql --disable-many-domains
Sem suporte a MySQL use:
./configure
Agora que escolheu se vai usar MySQL ou não, podemos continuar a instalação:
make make install-strip
Para o perfeito funcionamento do seu servidor, você precisa criar o arquivo onde é definido o relay, este arquivo é o /var/vpopmail/etc/tcp.smtp.
echo '127.:allow,RELAYCLIENT=""' >> /var/vpopmail/etc/tcp.smtp tcprules /var/vpopmail/etc/tcp.smtp.cdb /var/vpopmail/etc/tcp.smtp.tmp < /var/vpopmail/etc/tcp.smtp
Caso tenha optado por usar o vpopmail com suporte a MySQL, precisamos criar o banco do vpopmail, então inicie o seu MySQL e digite:
echo "create database vpopmail" | mysql -uroot -p echo "grant all privileges on vpopmail.* to 'vpopmail'@'localhost' identified by 'vpoppw'" | mysql -uroot -p echo "flush privileges" | mysql -uroot -p mv /var/vpopmail/etc/vpopmail.mysql /var/vpopmail/etc/vpopmail.mysql.orig echo "# host|port|user|password|database" > /var/vpopmail/etc/vpopmail.mysql echo "localhost|0|vpopmail|vpoppw|vpopmail" >> /var/vpopmail/etc/vpopmail.mysql
Com o vpopmail instalado, precisamos instalar o patch do chkuser. Este patch tem inúmeras funcionalidades, dentre elas, verificar se o usuário/alias/lista existe ou não.
Obs: Este patch depende do vpopmail que depende do qmail, ou seja, primeiro instalamos o qmail, depois o vpopmail para por último aplicar este patch no qmail e recompilá-lo. Por este motivo que ele é um patch separado.
cd /usr/src/qmailsource cd qmail-1.03 patch -p0 <../patches/qmail-1.03-chkuser-2.0.8-v01-release.patch make clean make setup check
Como o próprio nome diz, ele é o programa que serve para enviar uma resposta automática definida pelo usuário, muito conhecido como vacation ou mensagem de férias.
cd /usr/src/qmailsource tar xvzf autorespond-2.0.5.tar.gz cd autorespond-2.0.5 make make install
ezmlm (Easy Mail List Manage) é um gerenciador de lista de distribuição de emails. Com ele você pode incluir, exluir e alterar opções da lista, pode dizer que somente determinadas pessoas podem enviar emails para ela e etc...
cd /usr/src/qmailsource tar xvzf ezmlm-0.53-idx-0.41.tar.gz cd ezmlm-0.53-idx-0.41 make make setup
O daemontools é o pacote de programas que serve para gerenciar serviços em sistemas *UNIX. Ná nossa instalação ele será usado para controlar o qmail + vpopmail + clamav + spamassassin.
cd /usr/src/qmailsource tar xvzf daemontools-0.76.tar.gz cd admin mv daemontools-0.76 /usr/local/ chmod 1755 /usr/local/daemontools-0.76 cd /usr/local/daemontools-0.76 patch -p1 </usr/src/qmailsource/patches/daemontools-0.76.errno.patch sh package/install
courier-imap é um excelente servidor pop/imap. Foi feito para ser usado com o qmail e tem total compatibilidade com o vpopmail.
Primeiramente vamos instalar o courier-authlib pois a nova versão do courier-imap separou o pacote de autentição.
cd /usr/src/qmailsource tar xvjf courier-authlib-0.60.2.tar.bz2
Configurado:
cd courier-authlib-0.60.2 ./configure \ --prefix=/usr/local/courier-authlib \ --enable-unicode \ --with-trashquota \ --without-authpam \ --without-authldap \ --without-authpwd \ --without-authmysql \ --without-authpgsql \ --without-authshadow \ --without-authuserdb \ --without-authcustom \ --without-authcram \ --without-authdaemon \ --with-authvchkpw \ --with-mailuser=vpopmail \ --with-mailgroup=vchkpw \ --disable-root-check \ --enable-workarounds-for-imap-client-bugs
Compilando:
make make install-strip make install-configure
Agora instalando o courier-imap.
cd /usr/src/qmailsource tar xvjf courier-imap-4.3.1.tar.bz2 cd courier-imap-4.3.1 COURIERAUTHCONFIG=/usr/local/courier-authlib/bin/courierauthconfig \ CPPFLAGS=-I/usr/local/courier-authlib/include \ ./configure \ --prefix=/usr/local/courier-imap \ --disable-root-check make make install-strip make install-configure
Com o courier-imap instalado, vamos fazer algumas alterações:
cat /usr/local/courier-imap/etc/imapd.dist | sed -e \ '/^TCPDOPTS/s/"$/ -user=vpopmail -group=vchkpw"/g' -e '/^IMAPDSTART=/s/NO/YES/g' > /usr/local/courier-imap/etc/imapd
O comando acima simplesmente cria o arquivo imapd com base no imapd.dist, alterando a linha TCPDOPTS e adicionando suporte ao vpopmail e também alterando a opção IMAPDSTART para yes.
Em versões anteriores do courier-imap, era bem simples iniciá-lo com o daemontools (não quer dizer que agora não seja possível, é que nem parei para tentar ver isso). Portanto crie o arquivo /etc/rc.d/rc.courier-imap com o seguinte conteúdo:
#!/bin/sh
#
# Start/Stop/Restart the Courier-imap
# By Cláudio Borges <cbsfilho[at]gmail.com>
courier_imap_start() {
/usr/local/courier-authlib/sbin/authdaemond start
/usr/local/courier-imap/libexec/imapd.rc start
}
courier_imap_stop() {
/usr/local/courier-authlib/sbin/authdaemond stop
/usr/local/courier-imap/libexec/imapd.rc stop
}
courier_imap_reload() {
/usr/local/courier-authlib/sbin/authdaemond restart
/usr/local/courier-imap/libexec/imapd.rc restart
}
case "$1" in
start)
echo -n "Starting Courier-IMAP server:"
courier_imap_start
echo ""
;;
stop)
echo -n "Stopping Courier-IMAP server:"
courier_imap_stop
echo ""
;;
restart)
$0 stop
sleep 1
$0 start
;;
reload)
echo -n "Reloading Courier-IMAP server:"
courier_imap_reload
echo ""
;;
*)
echo "Usage $0 start|stop|reload|restart"
esac
exit 0
E para finalizar a instalação do courier-imap:
chmod 755 /etc/rc.d/rc.courier-imap echo "# Inicializacao do Courier-imap # /etc/rc.d/rc.courier-imap start" >> /etc/rc.d/rc.local /etc/rc.d/rc.courier-imap start
Qmailadmin é uma interface web para a administração do vpopmail/autorespond/ezmlm, com ele você pode adicionar e remover usuários, mudar senhas, criar aliases, listas e etc.
Obs: É necessário ter um servidor web para poder usar o qmailadmin. Favor instalar o apache (não é necessário php). :)
cd /usr/src/qmailsource tar xvzf qmailadmin-1.2.11.tar.gz cd qmailadmin-1.2.11 ./configure --enable-htmldir=/var/www/htdocs \ --enable-cgibindir=/var/www/cgi-bin \ --enable-modify-quota \ --enable-domain-autofill make make install-strip
O qmHandle é usando para gerenciar a fila de mensagens (queue) do qmail, tanto mensagens locais como mensagens remotas, sua principal finalidade é apagar mensagens com determinado subject.
cd /usr/src/qmailsource tar -zxvf qmhandle-1.2.0.tar.gz cp qmHandle /var/qmail/bin/ ln -s /var/qmail/bin/qmHandle /usr/local/bin
O Microsoft Outlook e mais alguns softwares da Microsoft, utilizam um tipo de codificação próprio em suas mensagens. O ripmime (similiar ao tnef) é o programa que decodifica essas mensagens, para que a mesma possa ser verificada por um antivírus.
cd /usr/src/qmailsource/ tar xvzf ripmime-1.4.0.7.tar.gz cd ripmime-1.4.0.7 make make install
O Clamav é um antivírus mantido sobre a licença GPL, e foi feito para rodar em sistemas *UNIX (existe versão para Microsoft).
Vamos cria o usuário e grupo simscan, pois o clamav, spamassassin e simscan irão rodar sob este usuário.
groupadd simscan useradd simscan -g simscan -s /bin/false -d /var/qmail/simscan
cd /usr/src/qmailsource/ tar xvzf clamav-0.92.1.tar.gz cd clamav-0.92.1 ./configure --prefix=/usr/local \ --sysconfdir=/etc \ --with-user=simscan \ --with-group=simscan make patch -p0 <../patches/clamav-0.92.1.patch make check make install ldconfig
O patch aplicado acima, contém toda a configuração do clamd.conf e freshclam.conf, por este motivo não irei detalhar esta configuração. Caso tenha alguma dúvida, abra o patch com um editor de textos e verifique o que o mesmo define de configuração.
O Freshclam é o responsável por atualizar a base de dados do clamav. Vamos adicionar uma entrada no crontab para rodá-lo todos os dias as 2 da manhã.
crontab -l > /tmp/crontab.clamav echo '0 2 * * * /usr/local/bin/freshclam --quiet -l /var/log/clamav/freshclam.log' >> /tmp/crontab.clamav crontab /tmp/crontab.clamav -u root rm /tmp/crontab.clamav
O spamassassin é um programa usado para barrar spams (coisa que hoje em dia virou um praga difícil de combater). Como dependências, o spamassassin precisa de alguns módulos perl, já que o mesmo também é feito em perl.
Existem 2 meios de instalá-lo: ou você baixa o source do site cpan e compila manualmente, ou você usa o módulo cpan. Em nossa instalação iremos usar o módulo Cpan, pois além de ser mais prático, se algum dos módulos tiver dependência ele irá suprí-la automaticamente. Caso seja a primeira vez que você estiver usando-o, ele (Cpan) vai fazer algumas perguntas, então basta respondê-las e no final ele irá instalar o módulo desejado.
Obs: Para instalar o módulo Net::DNS e Mail::SPF, na hora que ele pede executar os testes, digite n. Ex:
Net::DNS:
Do you want to enable these tests? [y] n
E Mail::SPF:
Do you want to run external tests? These tests *will* *fail* if you do not have network connectivity. [y] n
Pressione "n", pois na maioria das vezes dá erro, nas demais opções somente pressione <ENTER>.
Começaremos pelas dependências:
cpan -i Bundle::CPAN cpan -fi HTTP::Date DB_File Digest::SHA1 Digest::HMAC Time::HiRes HTML::Tagset \ Digest::SHA1 Digest::HMAC Time::HiRes HTML::Tagset HTML::Parser Net::DNS Mail::SPF \ IP::Country Sub::Uplevel Test::Exception Test::Warn Net::SSLeay IO::Socket::INET6 \ IO::Socket::SSL Mail::DomainKeys Mail::DKIM LWP::UserAgent Archive::Tar Net::Ident Encode::Detect
Com as dependências instaladas, falta o spamassassin:
cpan -i Mail::SpamAssassin
Para que o spamassassin funcione corretamente, precisamos configurar o local.cf que é o seu arquivo de configuração. Edite o arquivo /etc/mail/spamassassin/local.cf e altere ou acrescente as linhas:
rewrite_header Subject [SPAM] report_safe 1 required_score 5.0 skip_rbl_checks 1 use_bayes 1 use_bayes_rules 1 bayes_auto_expire 1 bayes_auto_learn 1 bayes_expiry_max_db_size 3000000 bayes_auto_learn_threshold_nonspam 0.1 bayes_auto_learn_threshold_spam 4.0 use_auto_whitelist 0 allow_user_rules 0 ok_locales all score SPF_FAIL 3.0 score SPF_HELO_FAIL 3.0 score BAYES_80 2.0 score BAYES_95 2.0 score BAYES_99 2.0 score HTML_IMAGE_ONLY_32 1.5
O simscan é um scanner de email desenvolvido pela inter7 que foi feito especialmente para rodar com o qmail como uma alternativa ao qmail-scanner, além de ser mais leve, mais rápido, ele possui bem mais funcionalidades.
Antes de instalá-lo vamos ver as opções que serão usadas.
Aceita você habilitar checagem por domínio e/ou usuário, ou seja, aceita criar configurações separadas para emails ou domínios, exemplo de um simcontrol para um email em particular:
diretoria@dominio:clam=yes,spam=no,attach=.scr :clam=yes,spam=yes,spam_hits=9.0,attach=.vbs:.lnk:.scr:.wsh:.hta:.pif:.bat:.com:.mp3
Assim, primeiro ele verifica que tipo de checagens o usuário diretoria@dominio vai ter e quais bloqueios o mesmo terá. A segunda linha é para todos os outros usuários e/ou domínios existentes no servidor. Você pode fazer quantas entradas personalizadas quizer.
Habilita o uso do clamav como antivirus.
Define qual o path do clamdscan.
Habilita o uso do ripmime.
Habilita a verificação de anexos.
Habilita a verificação de spam.
Habilita qual o nível máximo de hits que os spams podem alcançar, qualquer valor acima do definido nesta opção será bloqueado.
Adiciona ao cabeçalho do email qual a versão de todos os scanners que checaram a mensagem.
Habilita qual o diretório onde os emails que forem barrados como spam e/ou virus ficarão guardados.
Com esta opção habilitada, caso a mensagen contenha vírus ou ultrapasse o valor definido em --enable-spam-hits, o simscan retorna uma mensagem de erro para o remente com estas informações.
Para que o simscan funciona corretamente com o clamav, precisamos de um patch, isso por que o clamav alterou seu arquivo de base de dados de daily.cvd para main.cvd.
cd /usr/src/qmailsource tar xvzf simscan-1.4.0.tar.gz cd simscan-1.4.0 patch -p0 <../patches/simscan-1.4.0.patch ./configure --enable-per-domain=y \ --enable-clamav=y \ --enable-clamdscan=/usr/local/bin/clamdscan \ --enable-clamavdb-path=/usr/local/share/clamav \ --enable-ripmime=y \ --enable-attach=y \ --enable-spam=y \ --enable-spam-hits=10 \ --enable-received=y \ --enable-quarantinedir=/var/qmail/quarantine \ --enable-custom-smtp-reject make make install-strip
Não podemos esquecer de criar o diretório onde os emails que forem barrados como vírus/spam serão arquivos.
mkdir -p /var/qmail/quarantine chown -R simscan /var/qmail/quarantine
O Arquivo de configuração do simscan é o /var/qmail/control/simcontrol, nele é definido se você irá usar clamav, spamassassin bem como a quantidade de hits para bloquear spams e quais extensões de arquivos que serão bloqueados.
echo ':clam=yes,spam=yes,spam_hits=9.0,attach=.vbs:.lnk:.scr:.wsh:.hta:.pif:.bat:.com' >> /var/qmail/control/simcontrol
Agora gerando os .cdb:
/var/qmail/bin/simscanmk /var/qmail/bin/simscanmk -g
Precisamos adicionar no crontab, para que todo dia às 00:00 horas, ele apague os emails existentes na quarentena mais antigos que 4 dias.
crontab -l >> /tmp/crontab.tmp
echo '0 0 * * * /usr/bin/find /var/qmail/quarantine/ -mtime +4 -exec rm {} \; > /dev/null 2>&1' >> /tmp/crontab.tmp
crontab /tmp/crontab.tmp -u root
rm /tmp/crontab.tmp
O spamdyke é uma pacotes de filtros para o qmail, dentre eles o greylist que é uma técnica anti-spam muito usada ultimamente, que barra muitos spammers. Não vou entrar em muitos detalhes sobre esta opção (caso queira saber mais, favor procurar no nosso amigo google), apenas vou falar das opções que iremos utilizar.
Define qual o nível de log. Opções válidas são 0 = nenhum log; 1 = somente erros; 2 = erros e infos; 3 = erros, info e mensagens de debug; 4 = log máximo com todas as informações.
Qual tipo de log que iremos usar. 0 = stderr, usando pelo multilog e 1 = syslog.
Define quantos segundos ele aguarda até desconectar.
Define qual o arquivo que contém os dominios locais, ex: /var/qmail/control/rcpthosts.
Define qual o diretório usado pelo graylist. Ex: /var/qmail/graylist.
Define quanto segundos ele vai aguardar antes de aceitar a mensagem.
Define quanto tempo iremos receber mensagens de um remetente antes de cair no graylist-min-secs novamente.
Define quantos segundos o smtp aguarda antes de aceitar a comunicação com o servidor, ou seja, enviar o banner de conexão para quem está conectando.
Esta opção você define quais rbls seu spamdyke irá verificar antes de aceitar a conexão do remetente.
Neste arquivo você define quais ips estão livres de todos os filtros definidos no spamdyke.
Define qual o certificado tls da conexão encriptada.
Aqui você define qual o comando usando pelo smtpd para verificar a autenticação da conexão, ou seja, usado para verificar se o usuário se autenticou ou não.
Já vimos as opções que iremos usar no spamdyke, agora iremos compilá-lo.
cd /usr/src/qmailsource/ tar xvzf spamdyke-3.1.6.tgz cd spamdyke-3.1.6 cd spamdyke ./configure --enable-tls make cp spamdyke /var/qmail/bin/
Depois de ter o spamdyke instalado, precisamos criar seu arquivo de configuração. Crie o arquivo /var/qmail/control/spamdyke.conf com o conteúdo:
log-level=2 log-target=0 idle-timeout-secs=60 local-domains-file=/var/qmail/control/rcpthosts graylist-dir=/var/qmail/graylist graylist-min-secs=300 graylist-max-secs=21600 greeting-delay-secs=2 check-dnsrbl=sbl.spamhaus.org check-dnsrbl=xbl.spamhaus.org check-dnsrbl=cbl.abuseat.org ip-whitelist-file=/var/qmail/control/spamdyke-whitelist.conf tls-certificate-file=/var/qmail/control/servercert.pem smtp-auth-command-encryption="/var/vpopmail/bin/vchkpw true"
Não esqueça de duas coisas:
Criar o arquivo spamdyke-whitelist.conf, pois se você não criá-lo, o spamdyke vai dar erro. Adicione o ip de loopback e o range de sua rede interna. Ex:
echo '127.0.0.1' > /var/qmail/control/spamdyke-whitelist.conf echo '10.0.0.0/16' > /var/qmail/control/spamdyke-whitelist.conf
Também é necessário criar o diretório de graylist e dentro dele, cada domínio que você adicionar, precisa ser criado. Ex:
mkdir -p /var/qmail/graylist/ung.br chown -R vpopmail:vchkpw /var/qmail/graylist
No comando acima criei o diretorio /var/qmail/graylist e dentro dele criei o diretório do meu domínio principal, no caso ung.br. Também mudei a permissão para o usuário sob o qual meu qmail-smtpd irá rodar.
Como já fizemos toda a instalação, precisamos criar os scripts de inicialização.
O qmailctl é um script usando para gerenciar o qmail (start/stop/restart e listar as mensagens na queue), o site Life With Qmail disponibiliza este script, só que o nosso qmailctl, está alterado para iniciar o vpopmail, clamav e spamassassin.
Crie o arquivo qmailctl dentro do diretório /var/qmail/bin com o seguinte conteúdo:
#!/bin/sh
# description: the qmail MTA
PATH=/var/qmail/bin:/bin:/usr/bin:/usr/local/bin:/usr/local/sbin
export PATH
QMAILDUID=`id -u qmaild`
NOFILESGID=`id -g qmaild`
case "$1" in
start)
echo "Starting qmail"
if svok /service/qmail-send ; then
svc -u /service/qmail-send
else
echo qmail-send supervise not running
fi
if svok /service/qmail-smtpd ; then
svc -u /service/qmail-smtpd
else
echo qmail-smtpd supervise not running
fi
if [ -d /var/lock/subsys ]; then
touch /var/lock/subsys/qmail
fi
if svok /service/qmail-pop3d ; then
svc -u /service/qmail-pop3d
else
echo qmail-pop3d supervise not running
fi
if svok /service/clamav ; then
svc -u /service/clamav
else
echo clamav supervise not running
fi
if svok /service/spamassassin ; then
svc -u /service/spamassassin
else
echo spamassassin supervise not running
fi
;;
stop)
echo "Stopping qmail..."
echo " qmail-smtpd"
svc -d /service/qmail-smtpd
echo " qmail-send"
svc -d /service/qmail-send
if [ -f /var/lock/subsys/qmail ]; then
rm /var/lock/subsys/qmail
fi
echo " qmail-pop3d"
svc -d /service/qmail-pop3d
echo " clamav"
svc -d /service/clamav
echo " spamassassin"
svc -d /service/spamassassin
;;
stat)
svstat /service/qmail-send
svstat /service/qmail-send/log
svstat /service/qmail-smtpd
svstat /service/qmail-smtpd/log
svstat /service/qmail-pop3d
svstat /service/qmail-pop3d/log
svstat /service/clamav
svstat /service/clamav/log
svstat /service/spamassassin
svstat /service/spamassassin/log
qmail-qstat
;;
doqueue|alrm|flush)
echo "Flushing timeout table and sending ALRM signal to qmail-send."
/var/qmail/bin/qmail-tcpok
svc -a /service/qmail-send
;;
queue)
qmail-qstat
qmail-qread
;;
reload|hup)
echo "Sending HUP signal to qmail-send."
svc -h /service/qmail-send
;;
pause)
echo "Pausing qmail-send"
svc -p /service/qmail-send
echo "Pausing qmail-smtpd"
svc -p /service/qmail-smtpd
echo "Pausing qmail-pop3d"
svc -p /service/qmail-pop3d
echo "Pausing clamav"
svc -p /service/clamav
echo "Pausing spamassassin"
svc -p /service/spamassassin
;;
cont)
echo "Continuing qmail-send"
svc -c /service/qmail-send
echo "Continuing qmail-smtpd"
svc -c /service/qmail-smtpd
echo "Continuing qmail-pop3d"
svc -c /service/qmail-pop3d
echo "Continuing clamav"
svc -c /service/clamav
echo "Continuing spamassassin"
svc -c /service/spamassassin
;;
restart)
echo "Restarting qmail:"
echo "* Stopping qmail-smtpd."
svc -d /service/qmail-smtpd
echo "* Sending qmail-send SIGTERM and restarting."
svc -t /service/qmail-send
echo "* Restarting qmail-smtpd."
svc -u /service/qmail-smtpd
echo "* Restarting qmail-pop3d."
svc -t /service/qmail-pop3d
echo "* Restarting clamav."
svc -t /service/clamav
echo "* Restarting spamassassin."
svc -t /service/spamassassin
;;
cdb)
tcprules /var/vpopmail/etc/tcp.smtp.cdb /var/vpopmail/etc/tcp.smtp.tmp < /var/vpopmail/etc/tcp.smtp
chmod 644 /var/vpopmail/etc/tcp.smtp.cdb
echo "Reloaded /var/vpopmail/etc/tcp.smtp."
;;
help)
cat <<HELP
stop -- stops mail service (smtp connections refused, nothing goes out)
start -- starts mail service (smtp connection accepted, mail can go out)
pause -- temporarily stops mail service (connections accepted, nothing leaves)
cont -- continues paused mail service
stat -- displays status of mail service
cdb -- rebuild the tcpserver cdb file for smtp
restart -- stops and restarts smtp, sends qmail-send a TERM & restarts it
doqueue -- schedules queued messages for immediate delivery
reload -- sends qmail-send HUP, rereading locals and virtualdomains
queue -- shows status of queue
alrm -- same as doqueue
flush -- same as doqueue
hup -- same as reload
HELP
;;
*)
echo "Usage: $0 {start|stop|restart|doqueue|flush|reload|stat|pause|cont|cdb|queue|help}"
exit 1
;;
esac
exit 0
Com o qmailctl criado, vamos alterar a permissão e fazer o link para o /usr/local/bin:
chmod 755 /var/qmail/bin/qmailctl ln -sf /var/qmail/bin/qmailctl /usr/local/bin
Também é necessário criar alguns diretórios usados pelos scripts de inicialização, bem como os diretórios de log.
mkdir -p /var/qmail/supervise/{qmail-send,qmail-smtpd,qmail-pop3d,clamav,spamassassin}/log
mkdir -p /var/log/qmail/{smtpd,pop3d,simscan}
mkdir -p /var/log/{clamav,spamassassin}
Precisamos definir qual o tipo de delivery que o qmail irá usar, como seu padrão é o melhor de todos (Me desculpem os usuários de outros MTAs, mas foi o DJB que criou este padrão), iremos usar o Maildir. Não entrarei em detalhes como funciona o Maildir, direi apenas que ele separa as mensagens individualmente.
echo "./Maildir" > /var/qmail/control/defaultdelivery
Este arquivo starta o qmail com o delivery que definimos anteriormente. Portanto crie o arquivo /var/qmail/rc com o seguinte conteúdo:
#!/bin/sh # # Using stdout for logging # Using control/defaultdelivery from qmail-local to deliver messages by default exec env - PATH="/var/qmail/bin:$PATH" \ qmail-start "`cat /var/qmail/control/defaultdelivery`"
Definindo a permissão de execução:
chmod 755 /var/qmail/rc
Este arquivo é responsável por iniciar o qmail-send, que é o programa que envia as mensagens para os outros programas que farão a entrega local ou remota. Vamos criar o arquivo /var/qmail/supervise/qmail-send/run com o conteúdo:
#!/bin/sh # exec /var/qmail/rc
Este é o arquivo responsável por gerar os logs das mensagens enviadas. Crie o /var/qmail/supervise/qmail-send/log/run com o conteúdo:
#!/bin/sh # exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t s15000000 n10 /var/log/qmail
Este é o arquivo que controla todo o qmail-smtpd. O qmail-smtpd é o daemon responsável por receber todas as requisições que chegam ao seu MTA. Vamos criar o arquivo /var/qmail/supervise/qmail-smtpd/run com o conteúdo:
#!/bin/sh # VPOPMAILUID=`id -u vpopmail` VPOPMAILGID=`id -g vpopmail` MAXSMTPD=`cat /var/qmail/control/concurrencyincoming` LOCAL=`head -1 /var/qmail/control/me` QMAILQUEUE="/var/qmail/bin/simscan" NOP0CHECK=1 export QMAILQUEUE NOP0CHECK if [ -z "$VPOPMAILUID" -o -z "$VPOPMAILGID" -o -z "$MAXSMTPD" -o -z "$LOCAL" ]; then echo VPOPMAILUID, VPOPMAILGID, MAXSMTPD, or LOCAL is unset in echo /var/qmail/supervise/qmail-smtpd/run exit 1 fi if [ ! -f /var/qmail/control/rcpthosts ]; then echo "No /var/qmail/control/rcpthosts!" echo "Refusing to start SMTP listener because it'll create an open relay" exit 1 fi exec /usr/local/bin/softlimit -m 15000000 \ /usr/local/bin/tcpserver -v -R -l "$LOCAL" -x /var/vpopmail/etc/tcp.smtp.cdb -c "$MAXSMTPD" \ -u "$VPOPMAILUID" -g "$VPOPMAILGID" 0 smtp /var/qmail/bin/spamdyke -f /var/qmail/control/spamdyke.conf \ /var/qmail/bin/qmail-smtpd /var/vpopmail/bin/vchkpw true 2>&1
Este é o arquivo responsável por gerar os logs das conexões e mensagens recebidas (não confundir mensagens recebidas via MTA com mensagens baixadas via pop). Crie o arquivo /var/qmail/supervise/qmail-smtpd/log/run com o conteúdo:
#!/bin/sh # exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t s15000000 n10 /var/log/qmail/smtpd \ t s15000000 n10 '-*' '+* simscan:*' /var/log/qmail/simscan 2>&1
O arquivo criado acima, gera log em dois diretórios: No /var/log/qmail/smtpd ficam os logs das conexões smtp e no /var/log/qmail/simscan ficam somente os logs de TUDO que passa pelo simscan, assim fica mais fácil de ver o que o simscan está fazendo.
Este arquivo é responsável por iniciar o daemon qmail-pop3d, que é por onde os usuários irão baixar suas mensagens via pop. Crie o arquivo /var/qmail/supervise/qmail-pop3d/run com o conteúdo:
#!/bin/sh # DOMAIN=`cat /etc/qmail/defaultdomain` MAXPOP3D=`cat /var/qmail/control/concurrencyincoming` exec /usr/local/bin/softlimit -m 15000000 \ /usr/local/bin/tcpserver -v -c "$MAXPOP3D" -R -H -l 0 0 110 /var/qmail/bin/qmail-popup \ "$DOMAIN" /var/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir 2>&1
Este é o arquivo responsável por gerar os logs das conexões pop. Crie o /var/qmail/supervise/qmail-pop3d/log/run com o conteúdo:
#!/bin/sh # exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t s15000000 n10 /var/log/qmail/pop3d
Arquivo responsável por iniciar o clamav. Crie o arquivo /var/qmail/supervise/clamav/run com o conteúdo:
#!/bin/sh # if [ $(pidof clamd) ]; then echo "Error: clamd already running!" exit 1 fi if [ -e /tmp/clamd ]; then rm /tmp/clamd fi exec /usr/local/bin/setuidgid simscan /usr/local/sbin/clamd
Este é o arquivo responsável por gerar os logs do clamav. Crie o /var/qmail/supervise/clamav/log/run com o conteúdo:
#!/bin/sh # exec /usr/local/bin/setuidgid simscan /usr/local/bin/multilog t s15000000 n10 /var/log/clamav
Este arquivo é responsável por iniciar o spamassassin. Crie o arquivo /var/qmail/supervise/spamassassin/run com o conteúdo:
#!/bin/sh # exec /usr/bin/spamd -c -v -x -u simscan -s stderr -r -d --pidfile=/var/run/spamd.pid 2>&1
Este é o arquivo responsável por gerar os logs do spamassassin. Crie o /var/qmail/supervise/spamassassin/log/run com o conteúdo:
#!/bin/sh # exec /usr/local/bin/setuidgid simscan /usr/local/bin/multilog t s15000000 n10 /var/log/spamassassin
E para finalizar, iremos criar os arquivos de controle do qmail (na lista de patches falei sobre a grande maioria deles), mudar as permissões do mesmo, fazer os links para o daemon-tools e atualizar a base de dados do clamav.
echo 1 > /var/qmail/control/authreq
echo '[!%#:*^(){}]' > /var/qmail/control/badmailfrom
echo '[!%#:*^(){}]' > /var/qmail/control/badrcptto
echo 2097152 > /var/qmail/control/bouncemaxbytes
echo 60 > /var/qmail/control/concurrencylocal
echo 60 > /var/qmail/control/concurrencyincoming
echo 60 > /var/qmail/control/concurrencyremote
echo 10485760 > /var/qmail/control/databytes
echo 1 > /var/qmail/control/heloreq
echo 3 > /var/qmail/control/spfbehavior
echo 60 > /var/qmail/control/tarpitcount
echo 60 > /var/qmail/control/tarpitdelay
chmod 0644 /var/qmail/control/authreq
chmod 0644 /var/qmail/control/badmailfrom
chmod 0644 /var/qmail/control/badrcptto
chmod 0644 /var/qmail/control/bouncemaxbytes
chmod 0644 /var/qmail/control/concurrencylocal
chmod 0644 /var/qmail/control/concurrencyincoming
chmod 0644 /var/qmail/control/concurrencyremote
chmod 0644 /var/qmail/control/databytes
chmod 0644 /var/qmail/control/heloreq
chmod 0644 /var/qmail/control/spfbehavior
chmod 0644 /var/qmail/control/tarpitcount
chmod 0644 /var/qmail/control/tarpitdelay
chmod 0755 /var/qmail/supervise/{qmail-send,qmail-smtpd,qmail-pop3d}/run
chmod 0755 /var/qmail/supervise/{qmail-send,qmail-smtpd,qmail-pop3d}/log/run
chmod 0755 /var/qmail/supervise/{clamav,spamassassin}/run
chmod 0755 /var/qmail/supervise/{clamav,spamassassin}/log/run
chown -R qmaill /var/log/qmail
chown simscan:simscan /var/log/{clamav,spamassassin}
/usr/local/bin/freshclam
ln -s /var/qmail/supervise/qmail-send /var/qmail/supervise/qmail-smtpd /var/qmail/supervise/qmail-pop3d /service
ln -s /var/qmail/supervise/clamav /var/qmail/supervise/spamassassin /service
Pronto, agora você tem um servidor de emails completo, com proteção contra vírus e anti-spam. Só falta adicionar o domínio, para isso entre no diretório /var/vpopmail/bin e digite:
./vadddomain dominio
Exemplo:
root@slack:/var/vpopmail/bin# ./vadddomain ung.br Please enter password for postmaster: enter password again:
Com tudo instalado, vamos ser se está funcionando. Os comandos que iremos digitar estão em vermelho.
Para testar conexões smtp, digite:
root@mail:~# telnet localhost 25 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 mail.ung.br ESMTP helo teste.int 250 mail.ung.br mail from: claudio@onerd.com.br 250 ok rcpt to: postmaster@ung.br 250 ok data 354 go ahead Subject: testando o smtp Testando o smtp . 250 ok 1207431535 qp 1506 quit 221 mail.ung.br Connection closed by foreign host.
Para executar os testes de autenticação, precisa-se criar o usuário e senha encriptados. Vamos fazer isso com o módulo perl Base64:
root@mail:~# perl -MMIME::Base64 -e 'printf ("\nusuario: %s\nsenha: %s",encode_base64("postmaster\@ung.br"),encode_base64("lerolero"));'
usuario: cG9zdG1hc3RlckB1bmcuYnI=
senha: bGVyb2xlcm8=
Com o usuário e senha encriptado, faremos os testes:
root@mail:~# telnet localhost 25 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 mail.ung.br ESMTP ehlo teste.int 250-mail.ung.br 250-STARTTLS 250-PIPELINING 250-8BITMIME 250-SIZE 10485760 250 AUTH LOGIN PLAIN CRAM-MD5 auth login 334 VXNlcm5hbWU6 cG9zdG1hc3RlckB1bmcuYnI= 334 UGFzc3dvcmQ6 bGVyb2xlcm8= 235 ok, go ahead (#2.0.0) quit 221 mail.ung.br Connection closed by foreign host.
Para os testes de tls digite:
root@mail:~# openssl s_client -crlf -starttls smtp -connect localhost:25
CONNECTED(00000003)
depth=0 /C=BR/ST=Sao Paulo/L=Guarulhos/O=Universidade Guarulhos/OU=UnG/CN=mail.ung.br/emailAddress=suporte@ung.br
verify error:num=18:self signed certificate
verify return:1
depth=0 /C=BR/ST=Sao Paulo/L=Guarulhos/O=Universidade Guarulhos/OU=UnG/CN=mail.ung.br/emailAddress=suporte@ung.br
verify return:1
---
Certificate chain
0 s:/C=BR/ST=Sao Paulo/L=Guarulhos/O=Universidade Guarulhos/OU=UnG/CN=mail.ung.br/emailAddress=suporte@ung.br
i:/C=BR/ST=Sao Paulo/L=Guarulhos/O=Universidade Guarulhos/OU=UnG/CN=mail.ung.br/emailAddress=suporte@ung.br
---
Server certificate
-----BEGIN CERTIFICATE-----
MIID2jCCA0OgAwIBAgIJANHbUXrRtvv9MA0GCSqGSIb3DQEBBQUAMIGlMQswCQYD
VQQGEwJCUjESMBAGA1UECBMJU2FvIFBhdWxvMRIwEAYDVQQHEwlHdWFydWxob3Mx
HzAdBgNVBAoTFlVuaXZlcnNpZGFkZSBHdWFydWxob3MxDDAKBgNVBAsTA1VuRzEa
MBgGA1UEAxMRbWFpbC5vbmVyZC5jb20uYnIxIzAhBgkqhkiG9w0BCQEWFHN1cG9y
dGVAb25lcmQuY29tLmJyMB4XDTA4MDQwNTE5MDEwMVoXDTA5MDQwNjE5MDEwMVow
gaUxCzAJBgNVBAYTAkJSMRIwEAYDVQQIEwlTYW8gUGF1bG8xEjAQBgNVBAcTCUd1
YXJ1bGhvczEfMB0GA1UEChMWVW5pdmVyc2lkYWRlIEd1YXJ1bGhvczEMMAoGA1UE
CxMDVW5HMRowGAYDVQQDExFtYWlsLm9uZXJkLmNvbS5icjEjMCEGCSqGSIb3DQEJ
ARYUc3Vwb3J0ZUBvbmVyZC5jb20uYnIwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJ
AoGBALE34Y6LhDJujdiXsCd9hKDHUol4PL4h/h3nAX3eZ6IwPn6yM5QCnakpmg0G
kmFwJ8ZKPUP4ezkVi4ttGWX8cr1y158bDZOaSW9hDmwoxpUxRrIXFT0Z3hamEV2/
PGNYZnI3bKzjeXkLHNCiy9CWZrl/1P7KjWDO6p1X77kgTUzJAgMBAAGjggEOMIIB
CjAdBgNVHQ4EFgQUWeTLU8QMass+NQwXsjabF5/UBTIwgdoGA1UdIwSB0jCBz4AU
WeTLU8QMass+NQwXsjabF5/UBTKhgaukgagwgaUxCzAJBgNVBAYTAkJSMRIwEAYD
VQQIEwlTYW8gUGF1bG8xEjAQBgNVBAcTCUd1YXJ1bGhvczEfMB0GA1UEChMWVW5p
dmVyc2lkYWRlIEd1YXJ1bGhvczEMMAoGA1UECxMDVW5HMRowGAYDVQQDExFtYWls
Lm9uZXJkLmNvbS5icjEjMCEGCSqGSIb3DQEJARYUc3Vwb3J0ZUBvbmVyZC5jb20u
YnKCCQDR21F60bb7/TAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4GBAJ0E
ywu+/11IcRLBxgHQNsdNsN54JWWbyFNBqTHkVO99cdwZki/tC89Aj1JBF+qC9Pdv
keCHwY7N7StjzFTgqFdTKhjd/9R50j6jYhr2MqPtQLHRWhdixvBZDTaQKHO7xd3a
rHEfTxiokrg+7VQzaUVpKUxG5wkRQggnIM4GHLst
-----END CERTIFICATE-----
subject=/C=BR/ST=Sao Paulo/L=Guarulhos/O=Universidade Guarulhos/OU=UnG/CN=mail.ung.br/emailAddress=suporte@ung.br
issuer=/C=BR/ST=Sao Paulo/L=Guarulhos/O=Universidade Guarulhos/OU=UnG/CN=mail.ung.br/emailAddress=suporte@ung.br
---
No client certificate CA names sent
---
SSL handshake has read 1318 bytes and written 351 bytes
---
New, TLSv1/SSLv3, Cipher is AES256-SHA
Server public key is 1024 bit
Compression: NONE
Expansion: NONE
SSL-Session:
Protocol : TLSv1
Cipher : AES256-SHA
Session-ID: 9083885EA85461125C7AB4ED2B70B9A255B09342D63A14DF03F7CCB9BD64F0D0
Session-ID-ctx:
Master-Key: B58C6C22C6647DC139ADA0B591956E5EA09B798C79B3A962EFD5563318ABCB916567FEC2F7BE8C7AF3F6F52134811DF8
Key-Arg : None
Start Time: 1207431806
Timeout : 300 (sec)
Verify return code: 18 (self signed certificate)
---
250 AUTH LOGIN PLAIN CRAM-MD5
quit
221 mail.ung.br
closed
Para fazer os testes de pop, digite:
root@mail:~# telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK <5606.1207431565@ung.br>
user postmaster@ung.br
+OK
pass lerolero
+OK
list
+OK
1 415
.
top 1
+OK
Return-Path: <claudio@onerd.com.br>
Delivered-To: postmaster@ung.br
Received: (qmail 9691 invoked by uid 89); 5 Apr 2008 18:38:55 -0300
Received: by simscan 1.4.0 ppid: 32448, pid: 1506, t: 8.6866s
scanners: attach: 1.4.0 clamav: 0.92.1/m:45/d:45
Received: from localhost (HELO teste.int) (127.0.0.1)
by mail.ung.br with SMTP; 5 Apr 2008 18:38:46 -0300
Subject: testando o smtp
Testando o smtp
.
quit
+OK
Connection closed by foreign host.
Para fazer os testes de conexão imap, digite:
root@mail:~# telnet localhost 143 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. * OK [CAPABILITY IMAP4rev1 STARTTLS] Courier-IMAP ready. Copyright 1998-2008 Double Precision, Inc. See COPYING for distribution information. 0 login postmaster@ung.br lerolero 0 OK LOGIN Ok. 0 logout * BYE Courier-IMAP server shutting down 0 OK LOGOUT completed Connection closed by foreign host.
Agora que seu domínio está criado, basta apenas adicionar os usuários. Caso queira usar o qmailadmin para cadastrá-los, pois com ele é muito mais fácil e cômodo além de ter uma interface bem simples e amigável. Para utilizá-lo, digite no seu browser:
http://ip_do_servidor/cgi-bin/qmailadmin
Vai aparecer a tela inicial do qmailadmin, ae é só preencher os dados e adicionar os usuários.
Para configurar a conta nos clientes de email outlook, evolution, thunderbird, etc. Você tem que utilizar usuario@dominio para conexões de entrada e na sessão de smtp, configurar que o servidor precisa de usuário e senha para enviar emails, colocando o mesmo usuário definido para conexões de entrada e deixando marcada a opção TLS if available.
Até a próxima.
Cláudio Borges