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

Por: Farley em 19/06/2007


Configurar Postfix para se conectar no MySQL



1. Criaremos 6 arquivos para a conexão com as tabelas do banco mail. No lugar de "sua_senha", coloque a senha criada na página 2 item 3.

1.1. vi /etc/postfix/mysql-virtual_domains.cf

user = mail_admin
password = sua_senha
dbname = mail
query = SELECT domain AS virtual FROM domains WHERE domain='%s'
hosts = 127.0.0.1

1.2. vi /etc/postfix/mysql-virtual_forwardings.cf

user = mail_admin
password = sua_senha
dbname = mail
query = SELECT destination FROM forwardings WHERE source='%s'
hosts = 127.0.0.1

1.3. vi /etc/postfix/mysql-virtual_mailboxes.cf

user = mail_admin
password = sua_senha
dbname = mail
query = SELECT CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/') FROM users WHERE email='%s'
hosts = 127.0.0.1

1.4. vi /etc/postfix/mysql-virtual_email2email.cf

user = mail_admin
password = sua_senha
dbname = mail
query = SELECT email FROM users WHERE email='%s'
hosts = 127.0.0.1

1.5. vi /etc/postfix/mysql-virtual_transports.cf

user = mail_admin
password = sua_senha
dbname = mail
query = SELECT transport FROM transport WHERE domain='%s'
hosts = 127.0.0.1

1.6. vi /etc/postfix/mysql-virtual_mailbox_limit_maps.cf

user = mail_admin
password = sua_senha
dbname = mail
query = SELECT quota FROM users WHERE email='%s'
hosts = 127.0.0.1

2. Mudando as permissões dos arquivos criados:

# chmod o= /etc/postfix/mysql-virtual_*.cf
# chgrp postfix /etc/postfix/mysql-virtual_*.cf


3. Agora criaremos o grupo e usuário v_mail:

# groupadd -g 5000 vmail
# useradd -g vmail -u 5000 vmail -d /home/vmail -m


4. Configurando o postfix -> execute estas linhas de comando:

# postconf -e 'myhostname = server1.example.com'
# postconf -e 'mydestination = server1.example.com, localhost, localhost.localdomain'
# postconf -e 'mynetworks = 127.0.0.0/8'
# postconf -e 'transport_maps = proxy:mysql:/etc/postfix/mysql-virtual_transports.cf'


Contas virtuais:

# postconf -e 'virtual_alias_domains ='
# postconf -e 'virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql-virtual_email2email.cf'
# postconf -e 'virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-virtual_domains.cf'
# postconf -e 'virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailboxes.cf'
# postconf -e 'virtual_mailbox_base = /home/vmail'
# postconf -e 'virtual_uid_maps = static:5000'
# postconf -e 'virtual_gid_maps = static:5000'
# postconf -e 'virtual_create_maildirsize = yes'
# postconf -e 'virtual_mailbox_extended = yes'
# postconf -e 'virtual_mailbox_limit_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailbox_limit_maps.cf'
# postconf -e 'virtual_mailbox_limit_override = yes'
# postconf -e 'virtual_maildir_limit_message = "The user you are trying to reach is over quota."'
# postconf -e 'virtual_overquota_bounce = yes'
# postconf -e 'proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $virtual_mailbox_limit_maps'
# postconf -e 'inet_interfaces = all'


SASL:

# postconf -e 'smtp_sasl_auth_enable = yes'
# postconf -e 'smtpd_sasl_auth_enable = yes'
# postconf -e 'smtpd_sasl_security_options = noanonymous'
# postconf -e 'broken_sasl_auth_clients = yes'
# postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated, reject'


5. Agora vamos configurar o certificado SSL, caso você deseje usar. Eu particularmente preferi não utilizar, pois comercialmente desgasta muito o cliente, mas pra quem quiser utilizar, segue como configurar:

# cd /etc/postfix
# openssl req -new -outform PEM -out smtpd.cert -newkey rsa:2048 -nodes -keyout smtpd.key -keyform PEM -days 365 -x509

Seu Pais --> Country Name (e.g., "BR")
Seu Estado --> State or Province Name
Sua Cidade --> Enter your City.
Sua Empresa --> Enter your Organization Name (e.g., the name of your company).
Seu Departamento --> Enter your Organizational Unit Name (e.g. "CPD").
Seu Dominio --> Enter the Fully Qualified Domain Name of the system (e.g. "teste.net").
Seu Email --> Enter your Email Address

Com isso foi criado o arquivo smtpd.key. Vamos mudar as permissões dele:

# chmod o= /etc/postfix/smtpd.key

e adicione estas linhas em /etc/postfix/main.cf:

smtpd_use_tls = yes
smtpd_tls_cert_file = /etc/postfix/smtpd.cert
smtpd_tls_key_file = /etc/postfix/smtpd.key
smtpd_tls_auth_only = yes
smtp_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_loglevel = 3
smtpd_tls_received_header = yes
Página anterior     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 SSH - Prático e Seguro

Instalando e configurando Cacti + SNMP no CentOS / Red Hat

Convertendo o HP Pavilion dv2000 ao Ubuntu

Configurando o NSCA no Nagios

Autenticando clientes Linux em servidor NIS FreeBSD de forma segura

  
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 [email protected]í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 protected] 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, [email protected], 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 protected]: Recipient address
rejected: Access denied; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<localhost.localdomain>
Nov 23 11:48:36 mail sendmail[4695]: lANEmapU004695: [email protected], 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 <[email protected]>: Recipient
address rejected: Access denied; from=<> to=<[email protected]> 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 <[email protected]>:
Recipient address rejected: Access denied; from=<> to=<[email protected]> 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:
<[email protected]>: 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