HOWTO: Postfix + MySQL + SMTP-AUTH + Quota + SpamAssassin + ClamAV
Este é um HOWTO para Debian Sarge 3.1. O instalei e deixei em produção em minha empresa, por isso aconselho: a maneira mais fácil de seguir este tutorial é usar um cliente SSH (como o PuTTY para Windows) e simplesmente copiar e colar os comandos, isto ajuda evitar erros tipográficos. Boa sorte!
Parte 5: Configurando o Postfix
Agora vamos dizer ao Postfix para encontrar toda a informação na base de dados. Conseqüentemente teremos que criar seis arquivos de texto. Observe também que eu conecto o MySQL pelo IP 127.0.0.1 em vez do localhost. Isto ocorre porque o Postfix está funcionando em uma cadeia do chroot e pode com isso não ter acesso ao soquete de MySQL.
Confira/altere a linha do arquivo /etc/mysql/my.cnf para o seguinte:
Confira/altere a linha do arquivo /etc/mysql/my.cnf para o seguinte:
bind-address = 127.0.0.1
Se você precisou alterar a linha, reinicie o MySQL:
# /etc/init.d/mysql restart
Vamos criar os arquivos agora:
# vi /etc/postfix/mysql-virtual_domains.cf
Copie e cole:
user = mail_admin
password = mail_admin_password
dbname = mail
table = domains
select_field = 'virtual'
where_field = domain
hosts = 127.0.0.1
password = mail_admin_password
dbname = mail
table = domains
select_field = 'virtual'
where_field = domain
hosts = 127.0.0.1
Saia salvando com :x
Faça o mesmo procedimento para os outros cinco arquivos:
# vim /etc/postfix/mysql-virtual_forwardings.cf
user = mail_admin
password = mail_admin_password
dbname = mail
table = forwardings
select_field = destination
where_field = source
hosts = 127.0.0.1
password = mail_admin_password
dbname = mail
table = forwardings
select_field = destination
where_field = source
hosts = 127.0.0.1
# vim /etc/postfix/mysql-virtual_mailboxes.cf
user = mail_admin
password = mail_admin_password
dbname = mail
table = users
select_field = CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/')
where_field = email
hosts = 127.0.0.1
password = mail_admin_password
dbname = mail
table = users
select_field = CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/')
where_field = email
hosts = 127.0.0.1
# vim /etc/postfix/mysql-virtual_email2email.cf
user = mail_admin
password = mail_admin_password
dbname = mail
table = users
select_field = email
where_field = email
hosts = 127.0.0.1
password = mail_admin_password
dbname = mail
table = users
select_field = email
where_field = email
hosts = 127.0.0.1
# vim /etc/postfix/mysql-virtual_transports.cf
user = mail_admin
password = mail_admin_password
dbname = mail
table = transport
select_field = transport
where_field = domain
hosts = 127.0.0.1
password = mail_admin_password
dbname = mail
table = transport
select_field = transport
where_field = domain
hosts = 127.0.0.1
# vim /etc/postfix/mysql-virtual_mailbox_limit_maps.cf
user = mail_admin
password = mail_admin_password
dbname = mail
table = users
select_field = quota
where_field = email
hosts = 127.0.0.1
password = mail_admin_password
dbname = mail
table = users
select_field = quota
where_field = email
hosts = 127.0.0.1
Para não termos problemas de permissão, execute os comandos:
# chmod o= /etc/postfix/mysql-virtual_*.cf
# chgrp postfix /etc/postfix/mysql-virtual_*.cf
Agora vamos criar um usuário e um grupo vmail com homedir /home/vmail. Este será o local aonde as caixas de e-mail serão armazenadas.
Lembra que eu aconselhei vocês a colocarem o home em uma partição diferente? Pois é, se você fez isso, aconselho que depois faça um raid 1 ou 5 (na melhor hipótese) se for o caso de perder o emprego junto com os e-mails.
# groupadd -g 5000 vmail
# useradd -g vmail -u 5000 vmail -d /home/vmail -m
Agora vamos as alterações necessárias ao postfix:
Faça um backup do arquivo /etc/postfix/main.cf e em seguida execute esses comandos no shell:
# 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 '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 'smtpd_sasl_auth_enable = yes'
# postconf -e 'broken_sasl_auth_clients = yes'
# postconf -e 'smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination'
# postconf -e 'smtpd_use_tls = yes'
# postconf -e 'smtpd_tls_cert_file = /etc/postfix/smtpd.cert'
# postconf -e 'smtpd_tls_key_file = /etc/postfix/smtpd.key'
# postconf -e 'transport_maps = proxy:mysql:/etc/postfix/mysql-virtual_transports.cf'
# 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'
Depois dessa seqüência vamos mudar algumas outras configurações para que o Postfix não tenha problemas com o Saslauthd.
# cd /etc/postfix
# openssl req -new -outform PEM -out smtpd.cert -newkey rsa:2048 -nodes -keyout smtpd.key -keyform PEM -days 365 -x509
<-- Enter your Country Name (ex: "BR")
<-- Enter your State or Province Name. (ex: "Rio de Janeiro")
<-- Enter your City. (ex: "Nova Iguaçu")
<-- Enter your Organization Name (ex: "JC")
<-- Enter your Organizational Unit Name (ex: "IT Department").
<-- Enter the Fully Qualified Domain Name of the system
(ex: "server1.example.com").
<-- Enter your Email Address (ex: "joao@exemplo.com")
# chmod o= /etc/postfix/smtpd.key
Postfix configurado, vamos a próxima etapa.