MTA Selor: Servidor de E-mails - Novo Projeto GPL

Como criar rapidamente, um servidor de E-mails para grande fluxo de mensagens e de fácil administração. Inclui: SMTP (MTA Selor), POP3/IMAP (Dovecot), base MySQL, WEBmail (Roundcube), quota de envio de mensagens e técnicas anti-Spam.

[ Hits: 16.707 ]

Por: Lucas Priori em 15/05/2014


Instalando o servidor SMTP



O Selor puxado no capítulo anterior, foi o código fonte. Para compilá-lo, você precisará do GCC (Compilador C), do NASM (montador Assembly) e, opcionalmente, da libcap-devel (apenas para GNU/Linux e para quem pretende um dia, usar a ação So_mark! do Selor, que permite marcar pacotes TCP de saída, ter controle usando traffic shaping e IP route).

# cd /home/progs
# tar xjf selor_src_1.1.tar.bz2
# cd selor_src_1.1
# make linux


Obs. 1: se ele reclamar da libcap. Você tem duas opções:

1. Procurar e instalar a libcap/libcap-devel.
2. Compilá-lo sem suporte a função So_mark:

# make linux_nocap

Obs. 2: no FreeBSD não existe suporte a So_mark, pois é um recurso que apenas o kernel do Linux tem. Não se preocupe, a So_mark não é essencial para o servidor SMTP.

# make linux_install
# groupadd -g 105 selor
# useradd -g selor -u 105 selor
# chown -R selor. /var/spool/selor
# chown -R selor. /var/log/selor


Edite o arquivo de configuração do servidor (/usr/local/selor/selor.conf):

# cd /usr/local/selor
# pico selor.conf


Em Server_name, coloque o nome do IP REVERSO do seu IP de internet

Em Module, deixe-o assim:

Module "/usr/local/selor/mod/selor_mysql.so /usr/local/selor/mod/selor_mysql.conf"

Em Dlocal, deixe-o assim:

Dlocal "/usr/local/libexec/dovecot/deliver -d %l <"

Obs. 3: cuidado para não deixar espaços na frente das opções, pois o Selor vai recusá-las.

Salve e saia do arquivo. Compile o módulo MySQL do Selor:

# cd /home/progs/
# tar xjf selor_mysql_src_1.0.tar.bz2
# cd selor_mysql_1.0


Como no meu caso, o S.O. é um GNU/Linux 64 bits, a linha para compilar o módulo é:

# gcc -shared -nostartfiles selor_mysql.c -o selor_mysql.so -DA64 -lcrypt -lmysqlclient -Wall -fPIC

Se você ver o conteúdo do arquivo comp.sh, que vem com o selor_mysql, vai ver os exemplos de compilação para cada caso (Linux 32, Linux 64, FreeBSD 32 e FreeBSD 64).

Obs. 4: se você tiver problemas para compilar este módulo, é porque você não tem as libs MySQL, o MySQL-devel ou então, o compilador não está encontrando-as em /usr/lib64 ou /usr/lib64/mysql/. As libs são: libmysqlclient*

Você poderia até copiá-las para a pasta padrão, /usr/lib64 ou /usr/lib (se for 32 bits):

# cp selor_mysql.so selor_mysql.conf /usr/local/selor/mod

Crie a base de E-mails no MySQL (troque "minhasenha" por uma senha de sua preferência):

# mysql

mysql> CREATE DATABASE mail;
mysql> grant all privileges on mail.* to [email protected] identified by 'minhasenha';
mysql> flush privileges;
mysql> quit

# mysql mail < selor_mysql.sql
# mkdir -p /home/mail/dominio.com.br/lucas/Maildir/new
# mkdir -p /home/mail/dominio.com.br/lucas/Maildir/cur
# mkdir -p /home/mail/dominio.com.br/lucas/Maildir/tmp
# chmod -R 755 /home/mail/dominio.com.br
# chown -R selor. /home/mail/dominio.com.br


Agora, insira um registro no banco para testarmos o servidor depois:

# mysql

mysql> use mail;
mysql> INSERT INTO domain VALUES ('dominio.com.br');

mysql> INSERT INTO users (mail,home,pass,maildir,date_add,time_add,domain,name) VALUES ('[email protected]','/home/mail/dominio.com.br/lucas/', encrypt('senha123','$1$9Fg5N/bT'),'Maildir','2014-05-10','00:56:00','dominio.com.br','Lucas');

mysql> quit;

Abra o arquivo de configuração do módulo (selor_mysql.conf) e deixe-o desta forma (não se esqueça de colocar a senha que você usou no "grant all..."):

# ---- Dados de conexao ----
Host=          localhost
Db=           mail
User=          selor
Pass=          minhasenha
Num_cnx=        5

# ---- Tabela de emails ----
User_table=       users
User_login_field=    mail
User_pass_field=    pass
User_pass_type=     crypt
User_quota_field=    quota
User_home_field=    home
User_maildir_field=   maildir
User_dlocal_field=   dlocal
Where_clause=      ok=1
#Auth_where_clause=

# ---- Tabela de Dominios ----
Domain_table=      domain
Domain_field=      name

# ---- Tabela de Alias ----
Alias_table=      aliases
Alias_field=      alias
Alias_rcpt_field=    rcpt

# ---- Tabela de Alias de Dominios ----
Adomain_table=     adomain
Adomain_field=     alias
Adomain_domain_field=  domain
Adomain_alias_seek=   yes

#--------- FIM DO ARQUIVO -----------

Você pode usar o /usr/local/selor/selor_mod_test para testar o módulo:

# cd /usr/local/selor
# ./selor_mod_test /usr/local/selor/mod/selor_mysql.so /usr/local/selor/mod/selor_mysql.conf


Digite os seguintes comandos para testar o módulo:

  local dominio.com.br
  auth [email protected] senha123
  quit


Pode ligar o servidor SMTP:

# /etc/rc.d/rc.selor start

Teste-o com um telnet:

# telnet localhost 25

Obs. 5: você deve ver a mensagem de boas vindas do servidor:

 "220 localhost() MTA Selor 1.1"

Digite quit, para sair

Servidor SMTP OK.
Caso o telnet não funcione, dê uma olhada em /var/log/selor/selor_wrn.log e poste aqui o erro para eu ajudá-lo.

Página anterior     Próxima página

Páginas do artigo
   1. Apresentação e downloads
   2. Instalando o servidor SMTP
   3. Instalando o servidor POP3/IMAP
   4. Instalação do WEBmail
   5. Filtros anti-Spam
   6. Quota de envio de E-mails
Outros artigos deste autor

Benchmark entre servidores de e-mails

Servidor de emails com Dovecot e MTA Sceo (projeto brasileiro)

Servidor de e-mail no Linux com MTA Sceo

Dividindo carga de saída de servidor SMTP (MTA Selor)

Leitura recomendada

Servidor de e-mails vinculado ao AD (Postfix + Courier)

Gateway de email com Qmail - proteção antivírus e antispam

Qpopper (POP seguro) no Slackware

Configurar autenticação no Postfix

Como fazer usuário interagir com SpamAssassin

  
Comentários
[1] Comentário enviado por demoncyber em 15/05/2014 - 10:36h

Olá,

Desculpe a pergunta de alguém sendo preguiçoso XP .. Vi que têm uma versão para FreeBSD, você sabe se o programa compila com LLVM ou se você esta fazendo uso de chamadas ou algo específico que só funcione com GCC, ou algo que nem vale tentar a empreitada de tentar ajustar o programa para compilar com LLVM ?

Você é o pai da criança :) vai ser mais rápido e fácil de responder.

Pergunto isto, pois a partir do freebsd 10 o compilador padrão é o LLVM .... ( blah blah ), instalar mais um compilador ( blah blah )

No mais achei bem interessante o software, pena que ainda não está utilizando algum gerenciador de código fonte como SVN, ou GIT.

Assim que conseguir um tempo melhor, espero testar e contribuir.

Ressalto aqui parabenizando a iniciativa do projeto, parabéns.

Abraços

[2] Comentário enviado por jov em 15/05/2014 - 11:46h

Parabéns pela iniciativa!

[3] Comentário enviado por lpriori em 15/05/2014 - 19:32h

Boa noite Demoncyber,

Então, eu fiquei sabendo sim que o FreeBSD estava adotando este novo compilador, porém, te confesso que ainda não testei nele. O FreeBSD no qual eu compilei e fiz testes foi o 9.0. que ainda usa o GCC.

Além do GCC, você precisa do NASM ( Montador Assembly ) também. Mas este é padrão a muito tempo em tudo quanto é Linux e FreeBSD.

Vou puxar esta nova versão para ver como é o esquema e se precisar de adaptações, eu faço. Obrigado pela dica. Vi que você já se cadastrou no Forum.
Fique a vontade para fazer criticas, tirar dúvidas ou sugestões. Como falei, estou sempre escutando o que a moçada precisa para implantar.

Realmente não usei qualquer tipo de gerenciador de código. Vamos ver como será daqui pra frente.
Eu agora estou em uma fase divulgação e estou traduzindo o site para o ingles.

Obrigado !


[4] Comentário enviado por igor.ol13 em 25/01/2015 - 14:02h


Olá, boa tarde. Agradeço e parabenizo pelo projeto, é muito bom ver brasileiros cada vez mais criando novos projetos...

Aparentemente tudo funcionou perfeitamente, exceto uma coisa: não envia emails para servidores externos, o roundcube sempre dá a mensagem "Erro SMTP (550): Falha ao adicionar o destinatário
"[email protected]" (Relay denied)."

O que eu posso fazer pra corrigir o problema?

[5] Comentário enviado por willian.firmino em 29/05/2015 - 16:01h

Este projeto ainda esta ativo ?

[6] Comentário enviado por mrbirth em 09/06/2015 - 09:07h


Olá Lucas, estou criando um novo servidor de email utilizando o Selor, parei na hora de testar o smtp no tel net aparece a seguinte msg: Trying ::1... Connected to localhost. Escape character is '^]'. 220 mail.etc.etc.etc ESMTP Exim 4.84... Não aparece erros nos logs, o que pode estar ocorrendo?? Obrigado!!!

[7] Comentário enviado por lpriori em 09/06/2015 - 12:29h


[6] Comentário enviado por mrbirth em 09/06/2015 - 09:07h


Olá Lucas, estou criando um novo servidor de email utilizando o Selor, parei na hora de testar o smtp no tel net aparece a seguinte msg: Trying ::1... Connected to localhost. Escape character is '^]'. 220 mail.etc.etc.etc ESMTP Exim 4.84... Não aparece erros nos logs, o que pode estar ocorrendo?? Obrigado!!!


Fala mrbirth,

O problema ai está ocorrendo porque o Exim está rodando ainda, o Selor nem ligou aí pois a porta 25 está sendo usada. Desative o Exim e ligue o Selor novamente

Abraço

[8] Comentário enviado por lpriori em 09/06/2015 - 12:35h


[5] Comentário enviado por willian.firmino em 29/05/2015 - 16:01h

Este projeto ainda esta ativo ?


Ola Willian.

Não entendi o motivo da pergunta, mas sim, esta ativo sim. É um projeto GPL

Abraço

[9] Comentário enviado por lpriori em 09/06/2015 - 12:43h


[4] Comentário enviado por igor.ol13 em 25/01/2015 - 14:02h


Olá, boa tarde. Agradeço e parabenizo pelo projeto, é muito bom ver brasileiros cada vez mais criando novos projetos...

Aparentemente tudo funcionou perfeitamente, exceto uma coisa: não envia emails para servidores externos, o roundcube sempre dá a mensagem "Erro SMTP (550): Falha ao adicionar o destinatário
"[email protected]" (Relay denied)."

O que eu posso fazer pra corrigir o problema?


Desculpe a demora.

Mas o que ocorre ai é que você precisa ativar o Relay para as conexões para sua rede interna ou conexões autenticadas.

'Relay' na verdade é o ato do servidor de email repassar um email para fora quando um destinatário for externo.
Você deve dar relay APENAS para conexões autenticadas ou alguns IPs de sua rede interna ou ips confiáveis.

No selor.conf, você encontra a opção Auth_relay que deve estar setada para 1 e então o Selor vai dar Relay pra conexões autenticadas.

Mas me parece que no seu caso ai você esteja querendo dar Relay para sua rede interna.
No arquivo rules_connection, mande dar Relay para sua rede.

Digamos que sua rede interna ai seja: 10.10.10.0/24, coloque a seguinte linha no rules_connection:
Ip? "10.10.10.0/24" Relay!

Não é preciso reiniciar o Selor.

De uma olhada no help do site:
http://www.mtaselor.com.br/?conteudo=11#Relay

Abraço

[10] Comentário enviado por mrbirth em 10/06/2015 - 08:58h


Bom dia Lucas, legal rapaz conseguir acertar o smtp exatamente o exim4 estava ativo, muito obrigado!! Agora preciso acertar o dovecot no teste na 110 aparece a seguinte msg "-ERR Disconnected: Auth process broken", poderia me ajudar novamente? Obrigado mesmo!! Abs.

[11] Comentário enviado por lpriori em 10/06/2015 - 12:17h

Fala mrbirth,

Você deve ter pulado algum ponto do tutorial na parte do Dovecot, mas para descobrir o motivo, teria que olhar o /var/log/maillog que é onde o Dovecot anota mensagens de erros.

Se quiser, me mande por mensagem direta o que aparece no /var/log/maillog relacionado ao Dovecot ou se quiser, mesmo não sendo relacionado diretamente ao Selor, pode postar o erro la no Forum (http://www.mtaselor.com.br/forum)

Abraço

[12] Comentário enviado por mrbirth em 10/06/2015 - 14:34h


[11] Comentário enviado por lpriori em 10/06/2015 - 12:17h

Fala mrbirth,

Você deve ter pulado algum ponto do tutorial na parte do Dovecot, mas para descobrir o motivo, teria que olhar o /var/log/maillog que é onde o Dovecot anota mensagens de erros.

Se quiser, me mande por mensagem direta o que aparece no /var/log/maillog relacionado ao Dovecot ou se quiser, mesmo não sendo relacionado diretamente ao Selor, pode postar o erro la no Forum (http://www.mtaselor.com.br/forum)

Abraço


Obrigadão Lucas, olha o erro:
Jun 10 14:36:43 mail dovecot: auth: Fatal: sql /usr/local/etc/dovecot/dovecot-sql.conf: Error in configuration file /usr/local/etc/dovecot/dovecot-sql.conf line 1: Unknown setting: ver
Jun 10 14:36:43 mail dovecot: master: Error: service(auth): command startup failed, throttling for 4 secs
Jun 10 14:36:43 mail dovecot: pop3-login: Disconnected: Auth process broken (disconnected before auth was ready, waited 0 secs): user=<>, rip=::1, lip=::1, secured, session=<FhWCUS0YLQAAAAAAAAAAAAAAAAAAAAAB>

Achei o problema copiei o script errado, é muita correria sempre passa algo, ja corrigir, vou testar. Valeu novamente!!


Contribuir com comentário