Configurando um servidor de email com Postfix, MySQL, SASL, MailScanner e MailWatch no CentOS 4.2

Este artigo descreve bem detalhadamente a configuração de um servidor de email no CentOS. Precisei fazer isso e não obtive muita informação referente a uma instalação de um servidor de email mais robusto no CentOS, visto que é uma distribuição mais recente. Então depois de ralar bastante, segue minha contribuição ao pessoal do VOL e a alguém que venha precisar!

[ Hits: 136.003 ]

Por: Farley em 19/06/2007


Configurações iniciais



Primeiramente instale o CentOS com uma configuração bem enxuta, sem instalar banco MySQL, Apache, DNS, nada.

Todos os comandos abaixo foram feitos como root; os que não foram feitos utilizando o root irei informar.

Se você usa uma conexão que precisa passar por um proxy, configure-o em /etc/profile colocando as seguintes linhas no final do arquivo:

export http_proxy=http://user:senha@IPSERVIDOR:PORTA
export ftp_proxy=http://user:senha@IPSERVIDOR:PORTA

1. Adicione repositório DAG:

# vi /etc/yum.repos.d/dag.repo

Com este conteúdo:

[dag]
name=Dag RPM Repository for Red Hat Enterprise Linux
baseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/dag
gpgcheck=1
enabled=0

E o repositório rpmforge:

# wget http://apt.sw.be/packages/rpmforge-release/\
rpmforge-release-0.3.6-1.el5.rf.i386.rpm

# rpm -qlip rpmforge-release-0.3.6-1.el5.rf.i386.rpm
# vi /etc/yum.repos.d/rpmforge.repo


E altere a linha:

enabled=1

para:

enabled=0

2. Se achar conveniente, atualize todos os pacotes já instalados.

3. Instale os seguintes pacotes utilizando o yum:

# yum install mysql-devel httpd mysql-server pkgconfig rpm-build php gcc cyrus-sasl-devel php-mysql php-mbstring openssl-devel zlib-devel pcre-devel openldap-devel libtool postgresql-devel gdbm-devel pam-devel expect gcc-c++ gamin-devel openldap-servers unrar

4. Baixar o courier e maildrop:

# mkdir $HOME/downloads
# cd $HOME/downloads
# wget
http://surfnet.dl.sourceforge.net/sourceforge/\
courier/courier-authlib-0.58.tar.bz2

# wget http://surfnet.dl.sourceforge.net/sourceforge/\
courier/maildrop-2.0.2.tar.bz2


5. Criar os diretórios para poder compilar os arquivos baixados no item anterior:

# mkdir $HOME/rpm
# mkdir $HOME/rpm/SOURCES
# mkdir $HOME/rpm/SPECS
# mkdir $HOME/rpm/BUILD
# mkdir $HOME/rpm/SRPMS
# mkdir $HOME/rpm/RPMS
# mkdir $HOME/rpm/RPMS/i386
# echo "%_topdir $HOME/rpm" >> $HOME/.rpmmacros


6. Compile o courier-authlib e instale-o:

# rpmbuild -ta courier-authlib-0.58.tar.bz2
# cd $HOME/rpm/RPMS/i386
# rpm -ivh courier-authlib-mysql-0.58-1.i386.rpm
# rpm -ivh courier-authlib-0.58-1.i386.rpm
# rpm -ivh courier-authlib-devel-0.58-1.i386.rpm


7. Compile o maildrop e instale-o:

# cd $HOME/downloads
# rpmbuild -ta maildrop-2.0.2.tar.bz2
# cd $HOME/rpm/RPMS/i386
# rpm -ivh maildrop-2.0.2-1.i386.rpm


8. Para compilar o courier-imap é necessário estar logado com um usuário que não seja o root. Então, caso não exista, crie um outro usuário, logue com este e execute o passo 5 novamente. Em seguida rode:

# su - usuário
# mkdir $HOME/downloads
# cd $HOME/downloads
# wget
http://surfnet.dl.sourceforge.net/sourceforge/\
courier/courier-imap-4.1.1.tar.bz2

# rpmbuild -ta courier-imap-4.1.1.tar.bz2
# su -
# cd /home/usuário/rpm/RPMS/i386
# rpm -ivh courier-imap-4.1.1-1.i386.rpm


9. Baixar e instalar o Postfix:

# wget ftp://ftp.pbone.net/mirror/ftp.centos.org/4.4/centosplus/i386/\
RPMS/postfix-2.2.10-1.RHEL4.2.mysql_pgsql.c4.i386.rpm

# rpm -ivh postfix-2.2.10-1.RHEL4.2.mysql_pgsql.c4.i386.rpm

Para verificar se o Postfix tem suporte ao mysql, dê o comando:

# postconf -m

    Próxima página

Páginas do artigo
   1. Configurações iniciais
   2. Instalar MySQL
   3. Criando o banco do Postfix no MySQL
   4. Configurar Postfix para se conectar no MySQL
   5. Configurar SASLauthd
   6. Utilizando o Postfix
   7. Instalando MailScanner e SpamAssassin
   8. Instalando MailWatch
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Servidor de email: Postfix + Courier IMAP + RoundCube e usuários virtuais (Debian e derivados)

Ubuntu Lucid Lynx - Instalação mínima (mini-iso) de 13MB

Resolvendo o problema de gerenciamento de energia - ACPI

Configurando e instalando o Java com Tomcat no Linux

FTP com autenticação LDAP

  
Comentários
[1] Comentário enviado por clezioazevedo em 31/07/2007 - 13:04h

Olá,

no arquivo filetype.rule.conf, na linha 25 e 26, nos seguintes itens:

chkconfig --levels 235 postfix off
chkconfig --levels 2345 MailScanner on

quando eu restarto no mail.log, dá uma menssagem de um possível erro na primeira palavra chave. O que pode ser? Qual a importância dessas linhas?

[2] Comentário enviado por farleypiva em 31/07/2007 - 13:43h

Ola Clezio.

Cara, essas linhas setam os serviços que vão ser inicializados com a maquina e suas prioridades.
No nosso exemplo, estamos desativando a inicialização do postfix e ativando a do MailScanner, porque ao inicializar o MailScanner, automaticamente ele inicializa o postfix.
Agora, sobre o seu erro; posta ele aki pra podermos entender melhor o erro.

[3] Comentário enviado por clezioazevedo em 01/08/2007 - 11:18h

Segue o erro:


Aug 1 11:15:15 server MailScanner[7045]: MailScanner E-Mail Virus Scanner version 4.41.3 starting...
Aug 1 11:15:15 server MailScanner[7045]: Possible syntax error in first keyword on line 25 of /etc/MailScanner/filetype.rules.conf
Aug 1 11:15:15 server MailScanner[7045]: Possible syntax error in first keyword on line 26 of /etc/MailScanner/filetype.rules.conf
Aug 1 11:15:15 server MailScanner[7045]: Read 120 hostnames from the phishing whitelist

vale salientar que as linhas 25 e 26 são as postadas no comentario anterior.

[4] Comentário enviado por farleypiva em 01/08/2007 - 17:45h

Mas ele faz referencia a linha 25 e 26 do arquivo /etc/MailScanner/filetype.rules.conf, porque neste arquivo não tem que ter estes comando não

[5] Comentário enviado por oliveirajh em 01/08/2007 - 20:55h

Olá Farley,

Como temos que criar o diretório para armazenar os emails? Quais devem ser as permissões, o usuário e grupo para os diretórios?

[6] Comentário enviado por farleypiva em 02/08/2007 - 09:04h

Ola oliveirajh!

Seguinte cara, assim que o endereço que voce criou receber um email, automaticamente o postfix cria o diretório em /home/vmail/dominio/usuario.
Mas só para constar, o usuario e o grupo são "vmail" e somente o dono tem permissoes que são rwx.

[7] Comentário enviado por oliveirajh em 02/08/2007 - 15:49h

Olá Farley,

As permissões do diretório, o usuário o grupo estão tudo OK. Crie o domínio na tabela domains e o usuário teste@domínio.com.br na tabela users. Quando envio um email recebo a mensagem no log: Recipient address rejected: Access denied; .... O que pode estar acontecendo?

[8] Comentário enviado por oliveirajh em 02/08/2007 - 17:38h

Olá Farley,

Achei o erro. O serviço saslauthd não estava ativado. Parabéns pelo tutorial!!!!

[9] Comentário enviado por farleypiva em 03/08/2007 - 17:26h

Beleza então. Qualquer duvida poste aqui e muito obrigado.

[10] Comentário enviado por oliveirajh em 07/08/2007 - 17:55h

Olá Farley,

Toda vez que tento enviar um email com relay autenticado recebo a seguinte mensagem no log:

Aug 7 17:52:02 monaco postfix/smtpd[17212]: warning: SASL authentication failure: cannot connect to Courier authdaemond: Connection refused

Aug 7 17:52:02 monaco postfix/smtpd[17212]: warning: SASL authentication failure: Password verification failed

Aug 7 17:52:02 monaco postfix/smtpd[17212]: warning: unknown[201.28.103.42]: SASL PLAIN authentication failed: generic failure

O que pode estar havendo?

[]'s

Júlio

[11] Comentário enviado por oliveirajh em 07/08/2007 - 18:13h

Olá Farley...

O problema acima foi resolvido... havia um erro de digitação no /usr/lib/sasl2/smtpd.

Agradeço pela anteção!

Júlio

[12] Comentário enviado por jgama em 10/08/2007 - 23:42h

Amigo Farley e compania.

Estou ou estava seguindo seu tuto mais parei quan a primeira copilação de erro
erro: Installed (but unpackaged) file(s) found:
/usr/lib/libltdl.a
/usr/lib/libltdl.la
/usr/lib/libltdl.so
/usr/lib/libltdl.so.3
/usr/lib/libltdl.so.3.1.0


Erros de criação do RPM:
Installed (but unpackaged) file(s) found:
/usr/lib/libltdl.a
/usr/lib/libltdl.la
/usr/lib/libltdl.so
/usr/lib/libltdl.so.3
/usr/lib/libltdl.so.3.1.0

Já a copilação do maildrop ocorreu sem problrema.

O que fazer para consegui copilar e criar o pacote rpm do courier-authlib-0.58-1

Abraço

[13] Comentário enviado por farleypiva em 12/08/2007 - 20:48h

Caro José Valdir,

Estranho este erro, pois o maildrop deveria não ter compilado também...
Verifica se todos os pacotes que a gente instala no inicio como o rpm-build, gcc, gcc-c++ estão instalados.
Outro detalhe... voce atualizou o seu CentOS?

[14] Comentário enviado por TrancëJay em 13/08/2007 - 16:01h

Grande Farley,

Tudo parece estar funcionando perfeitametne a excessão do Mailwatch:
nenhuma das mensagens processadas aparecem na interface web, sempre fica a mensagem "No rows retrieved". Creio eu que seja algum problema de permissão, só não tenho idéia de onde. Tem alguma sugestão?

[15] Comentário enviado por farleypiva em 13/08/2007 - 16:10h

Beleza Leonardo?!

Cara, dá uma revisada nas configurações do MailWatch...usuario, senha, permissões também, conforme descrito no artigo. Se mesmo assim não funcionar, posta aqui novamente. Valeu

[16] Comentário enviado por jgama em 19/08/2007 - 23:40h

Meu irmanzinho farley, ainda não fui feliz, atualizei o sistema e mesmo assim continua dando os erros na copilação do pacote courier-authlib-0.58-1

Tentei em outra máquina que também esta rodando o Centos 5.0 e o erro é o mesmo,

Fora os arquivos que vc indicou para instalar, será que tem mais alguns faltando?

Fico no aguardo amigão estou a fim de ir até o fim, pois preciso muito aprender colocar um servidor de e-mail para funcionar.

Abraço

[17] Comentário enviado por farleypiva em 21/08/2007 - 13:41h

Vamos lá então Jose Valdir

Eu instalei utilizando o Centos 4, e não atualizei os pacotes não. Com certeza está faltando
algum pacote com as libs pra voce conseguir compilar.
Tenta instalar o pacote libc6-dev ou task-kernel-compiling ou linux-kernel-compiling...veja se existem alguns desses pacotes. Testa e poste aqui por favor.

Um abraço

[18] Comentário enviado por celsopimentel em 23/08/2007 - 17:02h

Instalei o MailWath, a unica alteração que tive que fazer para funcionar, talvez alguem jah passou ou possa passar po isso:
Em Mailscanner.conf
Virus Scanners = auto alterei para
Virus Scanners = clamav

Talvez mais alguém use o clavav....vlw

E parabés pelo artigo!

[19] Comentário enviado por caiolira em 23/11/2007 - 11:27h

Oi Farley,

realizei os passos do tutorial mas não estou conseguindo logar no IMAP. Ao logar via telnet obtenho a seguinte mensagem:
. login email@dominio.com senha
* BYE Temporary problem, please try again later

Ao examinar o arquivo de log em /var/log/maillog encontro o seguinte:
Nov 23 10:29:47 mail imapd: Connection, ip=[::ffff:127.0.0.1]
Nov 23 10:30:00 mail imapd: LOGIN FAILED, user=email@dominio.com, ip=[::ffff:127.0.0.1]
Nov 23 10:30:00 mail imapd: authentication error: Input/output error

Se você puder me ajudar, ficarei bastante grato.

Atenciosamente,
Caio Lira.

[20] Comentário enviado por farleypiva em 23/11/2007 - 12:20h

Bom dia Caio.

Faça o teste do pop3 e smtp conforme o exemplo em
http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=6627&pagina=5
e me informe o que vc obteve.

[21] Comentário enviado por caiolira em 23/11/2007 - 13:28h

Farley,

consegui resolver. Quando havia colado um dos arquivos de configuração com o editor nano ele inseriu uma quebra de linha que estava causando o problema.

Agora estou com outro problema hehe. Já cadastrei no banco de dados usuario,dominio, transporte. Quando tento enviar uma mensagem encontro o seguinte erro no log:

Nov 23 11:48:36 mail postfix/trivial-rewrite[4698]: warning: do not list domain dominio.com in BOTH mydestination and virtual_mailbox_domains
Nov 23 11:48:36 mail postfix/smtpd[4696]: NOQUEUE: reject: RCPT from localhost.localdomain[127.0.0.1]: 554 <email@dominio.com: Recipient address
rejected: Access denied; from=<root@localhost.localdomain> to=<email@dominio.com> proto=ESMTP helo=<localhost.localdomain>
Nov 23 11:48:36 mail sendmail[4695]: lANEmapU004695: to=email@dominio.com, ctladdr=root (0/0), delay=00:00:00, xdelay=00:00:00, mailer=relay,
pri=30045, relay=[127.0.0.1] [127.0.0.1], dsn=5.0.0, stat=Service unavailable
Nov 23 11:48:36 mail sendmail[4695]: lANEmapU004695: lANEmapV004695: DSN: Service unavailable
Nov 23 11:48:36 mail postfix/smtpd[4696]: NOQUEUE: reject: RCPT from localhost.localdomain[127.0.0.1]: 554 <root@localhost.localdomain>: Recipient
address rejected: Access denied; from=<> to=<root@localhost.localdomain> proto=ESMTP helo=<localhost.localdomain>
Nov 23 11:48:36 mail sendmail[4695]: lANEmapV004695: to=root, delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=31069, relay=[127.0.0.1]
[127.0.0.1], dsn=5.0.0, stat=Service unavailable
Nov 23 11:48:36 mail sendmail[4695]: lANEmapV004695: lANEmapW004695: return to sender: Service unavailable
Nov 23 11:48:36 mail postfix/smtpd[4696]: NOQUEUE: reject: RCPT from localhost.localdomain[127.0.0.1]: 554 <postmaster@localhost.localdomain>:
Recipient address rejected: Access denied; from=<> to=<postmaster@localhost.localdomain> proto=ESMTP helo=<localhost.localdomain>
Nov 23 11:48:36 mail sendmail[4695]: lANEmapW004695: to=postmaster, delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=32093, relay=[127.0.0.1]
[127.0.0.1], dsn=5.0.0, stat=Service unavailable
Nov 23 11:48:36 mail sendmail[4695]: lANEmapV004695: Losing ./qflANEmapV004695: savemail panic
Nov 23 11:48:36 mail sendmail[4695]: lANEmapV004695: SYSERR(root): savemail: cannot save rejected email anywhere
Nov 23 11:48:36 mail postfix/smtpd[4696]: disconnect from localhost.localdomain[127.0.0.1]

Acredito que seja algo relativo a criacao de diretorios, pois nao vi o diretorio do usuario ser criado em /home/vmail.

Bastante grato pela atenção,
Caio Lira.

[22] Comentário enviado por farleypiva em 23/11/2007 - 14:20h

Beleza Caio.
Os diretorios são criados quando o usuario recebe o primeiro email.
Da uma olhada no arquivo /etc/postfix/main.cf nas linhas mydestination e virtual_mailbox_domains.
O meu está assim:
mydestination = $myhostname, localhost.$mydomain
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual_domains.cf

Aguardo retorno.

[23] Comentário enviado por caiolira em 23/11/2007 - 17:00h

Farley,

o problema estava na linha
smtpd_recipient_restrictions = permit_sasl_authenticated, reject

Esta linha nao permitia que enviasse email através do terminal simplesmenta através do comando "mail". Agora já estou conseguindo utilizar o servidor com o roundcube e estou enviando e recebendo emails entre as contas criadas. Agora só falta conseguir enviar email para a internet, estou aqui pesquisando o que falta para em seguida apontar o DNS em definitivo para este servidor.

Bastante grato,
Caio Lira.

[24] Comentário enviado por farleypiva em 23/11/2007 - 18:01h

É isso aí cara!
Qualquer consideração que voce ache interessante, favor comentar aqui para enriquecermos mais o material.
Um abraço.

[25] Comentário enviado por TrancëJay em 07/12/2007 - 11:37h

Cara, todos os seus relatórios funcionam? pq aqui no meu quase nenhum funciona. Ou a tela fica branca ou aparece 'no rows retrieved'. Já mandei um monte de spam e virus pra testar, aparece normalmente na 'recent list' mas os relatórios não funcionam. Alguma dica?

[26] Comentário enviado por farleypiva em 07/12/2007 - 13:21h

Bom dia!
Voce ta falando do Mailwatch né?! Cara, tenta instalar o pacote php-jpgraph e depois tenta gerar os graficos novamente.
Aguardo retorno.

[27] Comentário enviado por TrancëJay em 07/12/2007 - 16:45h

Já tava instalado esse pacote, até removi e reinstalei mas não adiantou :(

Vou acabar formatando a máquina e reinstalando tudo. De qualquer forma vlw pela atenção

[28] Comentário enviado por infortecpfz em 17/09/2009 - 14:06h

Parabéns pelo Artigo!

Me esclareça uma dúvida por favor! Eu preciso configurar um grupo de e-mail para meu domínio,
semelhante aos grupos do Yahoo! e Google Grupos, para quando eu enviar um e-mail para
@meudominio.com.br todos que tiveram conta cadastrada neste domínio receba a mesma
mensagem, poderia me auxiliar no mesmo por favor? Muito obrigado :wq



Fernando Santorsula

[29] Comentário enviado por chcdc em 22/12/2009 - 10:22h

Meus parabens pelo artigo


estou tendo uma certa dificuldade quando abro http://localhost/phpmyadmin/

aparece essa imagem

http://img685.imageshack.us/i/problemax.png/

Meu O.S eo centos 5.3


Sou iniciante em linux, se puder me ajudar agradeço

[]'S

Carlos /Aminduim

[30] Comentário enviado por farleypiva em 22/12/2009 - 10:32h

Aminduin, voce deve ter esquecido de instalar o php.
Confere aí.

[31] Comentário enviado por chcdc em 22/12/2009 - 10:41h

Sim o php esta instalado sim

Package php-5.1.6-23.2.el5_3.i386 already installed and latest version



[32] Comentário enviado por farleypiva em 22/12/2009 - 13:01h

Cara, então restarta seu apache
service httpd restart

Só para esclarecer, esta tela que foi exibida são as instruções php que não estão sendo interpretadas.

[33] Comentário enviado por chcdc em 22/12/2009 - 13:21h

Continua o mesmo problema

[34] Comentário enviado por farleypiva em 22/12/2009 - 13:25h

Faz o seguinte então:
Cria um arquivo teste.php com o conteudo:
<?
phpinfo();
?>

E acesse esse arquivo pelo navegador. Tem que aparecer um monte de informações referentes ao php. Se não aparecer é pq o php não está instalado corretamente.

[35] Comentário enviado por jgrudek em 29/01/2013 - 18:07h

boa tarde fiz todo o procedimento do Tutorial
porem na hora que envio e-mails para fora volta um e-mail
com o seguinte erro:
<joaogustavo@meuemail.com.br>: host meuemail.com.br[x.x.x.x] said: 550 SMTP
AUTH is required for message submission on port 587 (in reply to RCPT TO
command)

preciso de uma ajuda obrigado.


[36] Comentário enviado por Depeche2004 em 23/12/2016 - 13:41h

Olá Farley.

Não consegui dar prosseguimento no tutorial, pois os links e dependências estão desatualizados.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts