Vamos aqui instalar o
Postfix.
Tendo em vista que você já tenha o
ports funcional no sistema, faça o seguinte:
# cd /usr/ports/mail/postfix/snapshot
# env FLAVOR="mysql sasl2" make install
Isso vai fazer com que seja instalado o Postfix com suporte a MySQL e sasl2 e também instalando os respectivos softwares. Provavelmente vai demorar um pouco.
Agora vamos editar os arquivos de configuração do postfix para ver se está tudo ok.
No arquivo
/etc/postfix/main.cf altere o seguinte:
myhostname = mail.exemplo.com.br
mydomain = exemplo.com.br
myorigin = $myhostname
mydestination = $myhostname, localhost.$mydomain, localhost
mynetworks = 127.0.0.0/8, 172.16.0.0/24, 172.16.240.0/24
relay_domains = $mydestination
relayhost = [smtp.outroservidor.com]
alias_maps = hash:/etc/postfix/aliases
alias_database = hash:/etc/postfix/aliases
smtpd_banner = $myhostname ESMTP $mail_name
virtual_mailbox_domains = $mydomain
virtual_mailbox_base = /var/mail/vhosts
virtual_mailbox_maps = hash:/etc/postfix/vmailbox
virtual_minimum_uid = 2000
virtual_uid_maps = static:2000
virtual_gid_maps = static:2000
virtual_alias_maps = hash:/etc/postfix/virtual
Criando o usuário:
# useradd -d /var/mail/vhosts -g =uid -u 2000 -s /sbin/nologin -c "vboxs owner" vmail
# mkdir /var/mail/vhosts
# chown vmail.vmail /var/mail/vhosts/
Editando os arquivos com a lista de e-mails validos:
# cat /etc/postfix/vmailbox
info@exemplo.com.br exemplo.com.br/info/
ti@exemplo.com.br exemplo.com.br/ti/
suporte@exemplo.com.br exemplo.com.br/suporte/
cvs@exemplo.com.br exemplo.com.br/cvs/
# cat /etc/postfix/virtual
root@exemplo.com.br root@localhost.exemplo.com.br
postmaster@exemplo.com.br postmaster@localhost.exemplo.com.br
abuse@exemplo.com.br postmaster@localhost.exemplo.com.br
diretoria@exemplo.com.br postmaster@localhost.exemplo.com.br
Depois de alterado da forma desejada, execute os seguintes passas para que as alterações entrem em vigor:
# postmap /etc/postfix/vmailbox
# postmap /etc/postfix/virtual
# newaliases
Agora vamos substituir o sendmail, assim, ativando o postfix:
# postfix-enable
old /etc/mailer.conf saved as /etc/mailer.conf.pre-postfix
postfix /etc/mailer.conf enabled
NOTE: do not forget to add sendmail_flags="-bd" to
/etc/rc.conf.local to startup postfix correctly.
NOTE: do not forget to add "-a /var/spool/postfix/dev/log" to
syslogd_flags in /etc/rc.conf.local and restart syslogd.
NOTE: do not forget to remove the "sendmail clientmqueue runner"
from root's crontab.
Agora comente a linha referente ao sendmail que está no crontab usando o comando:
# crontab -e
Agora vamos alterar a inicialização do syslog e do sendmail para pegar o postfix. Altere o arquivo
/etc/rc.conf.
Edite as variáveis para ficarem da seguinte maneira:
syslogd_flags="-a /var/spool/postfix/dev/log"
sendmail_flags="-bd"
Reinicie o sistema pra entrar em vigor as alterações. Teria até outro jeito de fazer, mas é melhor reiniciar só pra ter certeza mesmo.
Agora vamos testar o funcionando do Postfix.
Testando com o telnet na porta 25:
# telnet localhost 25
Trying ::1...
Connected to localhost.
Escape character is '^]'.
220 chronos.exemplo.com.br ESMTP Postfix
HELO kernel.org
250 chronos.exemplo.com.br
mail from: abuse@kernel.org
250 2.1.0 Ok
rcpt to: root@exemplo.com.br
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
From: abuse@kernel.org
To: root@exemplo.com.br
Subject: Email de Teste
Funcionando!
.
250 2.0.0 Ok: queued as 013E16BFA8
quit
221 2.0.0 Bye
Connection closed by foreign host.
Aparentemente tudo ok.
Seguindo os próximos passos:
# openssl req -days 3650 -nodes -new -x509 -keyout /etc/ssl/private/ca.key -out /etc/ssl/ca.crt
Generating a 1024 bit RSA private key
........++++++
.........................................................++++++
writing new private key to '/etc/ssl/private/ca.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) []:BR
State or Province Name (full name) []:Brasil
Locality Name (eg, city) []:Goiania
Organization Name (eg, company) []:Exemplo LTDA
Organizational Unit Name (eg, section) []:TI CA
Common Name (eg, fully qualified host name) []:ca.testes.exemplo.com.br
Email Address []:
# openssl req -days 3650 -nodes -new -keyout /etc/postfix/ssl/private/server.key -out /etc/postfix/ssl/private/server.csr
Generating a 1024 bit RSA private key
.................................++++++
....................++++++
writing new private key to '/etc/postfix/ssl/private/server.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) []:
BR
State or Province Name (full name) []:
Brasil
Locality Name (eg, city) []:
Goiania
Organization Name (eg, company) []:
Exemplo LTDA
Organizational Unit Name (eg, section) []:
Postfix Server
Common Name (eg, fully qualified host name) []:
mail.exemplo.com.br
Email Address []:
root@exemplo.com.br
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
exemplopasswd
An optional company name []:
exemplopasswd
# openssl x509 -req -days 3650 -in /etc/postfix/ssl/private/server.csr -out /etc/postfix/ssl/server.crt -CA /etc/ssl/ca.crt -CAkey /etc/ssl/private/ca.key -CAcreateserial
Signature ok
subject=/C=BR/ST=Brasil/L=Goiania/O=Exemplo LTDA/OU=Postfix Server/CN=mail.exemplo.com.br/emailAddress=root@exemplo.com.br
Getting CA Private Key
Editando o arquivo de configuração do postfix, o
main.cf para habilitar o ssl. Edite o arquivo /etc/postfix/main.cf e adicione o seguinte:
# TLS
smtpd_tls_security_level = may
smtpd_tls_loglevel = 1
smtpd_tls_cert_file = /etc/postfix/ssl/server.crt
smtpd_tls_key_file = /etc/postfix/ssl/private/server.key
smtpd_tls_CAfile = /etc/ssl/ca.crt
tls_random_source = dev:/dev/urandom
Salve e feche.
No arquivo
/etc/postfix/master.cf descomente as seguintes linhas referentes ao smtps:
smtps inet n - n - - smtpd
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
Salve e feche.
Verifique se no arquivo
/etc/services existe a linha:
smtps 465/tcp # SMTPS
Se não existe, adicione, se existir, copie o arquivo para o chroot do postfix:
# cp /etc/services /var/spool/postfix/etc/services
E por fim, recarregue o postfix:
# postfix reload
Agora vamos para o MySQL.