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 selor@localhost 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 ('lucas@dominio.com.br','/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 lucas@dominio.com.br 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.