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: 140.768 ]

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

Sistema de backup Amanda

Configurando placa de som CMI8738

Adicionando suporte ao Layer7 no CentOS 5.3

DNS no Slackware

Guia do Desktop Redondo - Fedora 7

  
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

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts