Tecnologia Codificada
 
Instalando Servidor Email Postfix/Dovecot/MySQL POP3 + SMTP + IMAP + IMAPs

Instalando Servidor Email Postfix/Dovecot/MySQL POP3 + SMTP + IMAP + IMAPs

Sobre:

Postfix – Em computação, Postfix é um agente de transferência de e-mails (MTA) livre e de código aberto que encaminha e entrega e-mails, e tem como objetivo ser uma alternativa segura ao Sendmail, muito utilizado em servidores UNIX.
Maiores Detalhes: http://pt.wikipedia.org/wiki/Postfix

Dovecot– Dovecot é um servidor de IMAP e POP3 open source para sistemas Linux e UNIX, escrito primariamente com segurança em mente. Desenvolvido por Timo Sirainen, Dovecot foi lançado pela primeira vez em Julho de 2002. Dovecot tem o objetivo primário de ser um servidor de email open source leve, rápido e de fácil configuração.
Maiores Detalhes: http://pt.wikipedia.org/wiki/Dovecot

MySQL – O MySQL é um sistema de gerenciamento de banco de dados (SGBD), que utiliza a linguagem SQL (Linguagem de Consulta Estruturada, do inglês Structured Query Language) como interface.
Maiores Detalhes: http://pt.wikipedia.org/wiki/MySQL

Detalhes:

Instalação do Postfix + MySQL + Submission Port + Dovecot + Postfix Admin no no CentOS 6.5

Observações Gerais:

Abaixo a lista a ser seguida:

SMTP autenticado;
Secure SMTP com TLS;
Submission port (Porta 587);
Dovecot: IMAP, IMAPs e POP3;
Mensagem marcada como spam para a pasta spam;
MySQL para virtual domains e usuários;
Postfix Admin: GUI para administração de domínios;
Filtragem de spam/vírus usando amavisd-new, SpamAssassin e ClamAV.

Procedimentos:

Preparando o sistema (Opcional):
Atualização dos pacotes já instalados:
# yum -y update rpm
# yum -y -v update

Instalando o software

Para evitar problemas no final da instalação e configuração, é importante instalar todos estes pacotes listados:

# yum install dovecot dovecot-mysql dovecot-pigeonhole cyrus-sasl-devel cyrus-sasl-sql subversion vim
# yum install perl-MailTools perl-MIME-EncWords perl-MIME-Charset perl-Email-Valid perl-Test-Pod perl-TimeDate

# yum install perl-Mail-Sender perl-Log-Log4perl imapsync offlineimap perl-MIME-EncWords.noarch perl-Email-Valid.noarch perl-MIME-Charset-1.006.2-3.el6.noarch.rpm perl-TimeDate-1.16-11.1.el6.noarch perl-MailTools-2.04-4.el6.noarch perl-Mail-Sender.noarch perl-Log-Log4perl.noarch perl-Test-Log4perl.noarch perl-Lingua-EN-Numbers-Ordinate-1.02-1.el6.rf.noarch perl-Test-Simple

# yum install amavisd-new clamav clamd razor-agents perl-Convert-BinHex

Instalando o Postfix Admin

Na instalação do Postfix Admin, não usei pacote RPM (e nem sei se tem), fiz o download e extrai ele em /var/www/html. Lembrando que a versão 2.1.0 tem problemas com o MySQL 5, então, pegue a 2.3.5.

Execute os passos abaixo para baixar/instalar a última versão:

# wget http://sourceforge.net/projects/postfixadmin/files/latest/download/postfixadmin-2.91.tar.gz
# tar -xzvf postfixadmin-2.91.tar.gz
# mv postfixadmin-2.91 /var/www/html/

Observações:

Necessario o php-imap, caso não tenha para instalar:
# yum install php-imap

Configurando o Postfix Admin

Execute:

# service httpd restart

Primeiro criamos o banco para o Postfix Admin fazer o resto do trabalho. Estou levando em consideração que o MySQL já está instalado e funcionando.

Execute os comandos abaixo.

Entre no prompt do MySQL:

# mysql -u root -p

Criando a base de dados Postfix:

mysql> CREATE DATABASE postfix;

Criando o usuário Postfix (troque sua_senha_aqui por algo melhor):

mysql> CREATE USER postfix@localhost IDENTIFIED BY ‘sua_senha_aqui’;

Editando as permissões do banco Postfix para o usuário postfix:

mysql> GRANT ALL PRIVILEGES ON postfix . * TO postfix@localhost;

Agora vamos à configuração do Postfix Admin. Não esqueça de colocar sua senha na configuração.

Cole o conteúdo abaixo ou altere o que for necessário no arquivo de configuração:

# cd /var/www/html/postfixadmin
# vim config.inc.php

< php /** * Contains configuration options that override the default config file */ /********************************************* *!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! * You have to set $CONF[‘configured’] = true; before the * application will run! * Doing this implies you have changed this file as required. * i.e. configuring database etc; specifying setup.php password etc. */ $CONF[‘configured’] = true; // In order to setup Postfixadmin, you MUST specify a hashed password here. // To create the hash, visit setup.php in a browser and type a password into the field, // on submission it will be echoed out to you as a hashed value. $CONF[‘setup_password’] = ‘changeme’; $CONF[‘postfix_admin_url’] = ”; $CONF[‘database_type’] = ‘mysql’; $CONF[‘database_host’] = ‘localhost’; $CONF[‘database_user’] = ‘postfix’; $CONF[‘database_password’] = ‘sua_senha_aqui’; $CONF[‘database_name’] = ‘postfix’; $CONF[‘admin_email’] = ‘postmaster@seu_dominio_aqui.com.br’; $CONF[‘encrypt’] = ‘md5crypt’; //$CONF[‘dovecotpw’] = “/usr/sbin/dovecotpw”; $CONF[‘dovecotpw’] = “/usr/bin/doveadm pw”; $CONF[‘min_password_length’] = 6; $CONF[‘page_size’] = ’20’; $CONF[‘domain_path’] = ‘YES’; $CONF[‘domain_in_mailbox’] = ‘NO’; $CONF[‘aliases’] = ’50’; $CONF[‘mailboxes’] = ’50’; $CONF[‘maxquota’] = ‘100’; $CONF[‘quota’] = ‘YES’; $CONF[‘quota_multiplier’] = ‘1024000’; $CONF[‘transport’] = ‘YES’; $CONF[‘transport_options’] = array ( ‘virtual’, // for virtual accounts ‘local’, // for system accounts ‘relay’ // for backup mx ); $CONF[‘transport_default’] = ‘virtual’; $CONF[‘vacation’] = ‘YES’; $CONF[‘vacation_domain’] = ‘autoreply.seu_dominio_aqui.com.br’; $CONF[‘vacation_control’] =’YES’; $CONF[‘vacation_control_admin’] = ‘YES’; $CONF[‘special_alias_control’] = ‘YES’; $CONF[‘user_footer_link’] = “http: //algumacoisa.seu_dominio_aqui.com.br/main”; $CONF[‘show_footer_text’] = ‘YES’; $CONF[‘footer_text’] = ‘Return to seu_dominio_aqui.com.br’; $CONF[‘footer_link’] = ‘http: //seu_dominio_aqui.com.br’; $CONF[‘create_mailbox_subdirs’]=array(‘Drafts’,’Spam’,’Sent’,’Trash’); $CONF[‘create_mailbox_subdirs_host’]=’localhost’; $CONF[‘create_mailbox_subdirs_prefix’]=”; $CONF[‘used_quotas’] = ‘YES’; $CONF[‘new_quota_table’] = ‘YES’; // $CONF[‘create_mailbox_subdirs_hostoptions’]=array(‘notls’); $CONF[‘create_mailbox_subdirs_hostoptions’]=array(‘novalidate-cert’,’norsh’); // // END OF CONFIG FILE //

Reinicie o Apache e acesse a URL do Postfix Admin para rodar o “setup.php”:
# service httpd restart

E acesse pelo navegador:
http://seudominio.com.br/postfixadmin/setup.php
Ou:
http://127.0.0.1/postfixadmin/setup.php

Se tudo ocorreu bem, copie o Setup Password e crie a entrada:

$CONF[‘setup_password’] = ‘ cole o setup password aqui ‘;

Acima de:
$CONF[‘postfix_admin_url’] = ”;

Crie o administrador do Postfix na página do setup.

* Atenção 1: É obrigatório que o administrador tenha um e-mail válido de qualquer domínio, hotmail.com, gmail.com, etc, etc.

* Atenção 2: Não deixe de configurar o setup_password como descrito acima.

Para criar um domínio no Postfix Admin, é necessário que seu domínio exista em algum DNS. Se for o caso, configure o BIND para o seu domínio e no /etc/resolv.conf coloque nameserver 127.0.0.1.

Criando o certificado SSL

Para que nossas conexões não fiquem suscetíveis à captura de dados, iremos configurar certificados SSL, gerando o certificado SSL para o Postfix e Dovecot, usando os comandos abaixo:

# genkey –days 3650 mail.seu_dominio.com.br

Obs. 1: O “–days 3650” significa o número de dias em que o certificado é válido (3650/365 dá 10 anos).

Obs. 2: Troque “mail.example.com” para o nome completo do seu servidor, se o seu SMTP se chamar “smtp.servermail.com.br”, você irá executar:

# genkey –days 3650 smtp.servermail.com.br

Caso não tenha o Genkey para instalar siga os procedimentos:
# yum provides */genkey
Retorno:

crypto-utils-2.4.1-24.2.el6.x86_64 : SSL certificate and key management
: utilities
Repo : base
Matched from:
Filename : /usr/bin/genkey.

Depois:
# yum install crypto-utils

E instalar a dependência também:
# yum install mod_ssl

Ao executar o genkey, siga os procedimentos para criação, os certificados serão criados por padrão na pasta
/etc/pki/tls/certs/smtp.servermail.com.br.crt e /etc/pki/tls/private/smtp.servermail.com.br.key

Configurando o Virtual Mail User

O Virtual Mail User será o responsável por criar a Maildir dos usuários, estaremos colocando ele em /home para facilitar a administração, é aqui que será arquivado os e-mails dos usuários. Siga os passos abaixo:

# mkdir /home/vmail
# chmod 770 /home/vmail
# useradd -r -u 101 -g mail -d /home/vmail -s /sbin/nologin -c “Virtual mailbox” vmail
# chown vmail:mail /home/vmail

Com SELinux no estado enforcing, haverá problemas na entrega de e-mails, tente rodar o comando:

# chcon -R -u user_u -r object_r -t user_home_t /home/vmail

Caso não funcione, verifique as sugestões do setroubleshoot, geralmente resolvo os problemas de SELinux consultando ela.

Configurando o Postfix

Finalmente, começaremos a configurar o Postfix!

Irei fazer alguns comentários durante a configuração e vou ser honesto agora, não usei a configuração descrita para o Amavis, como não estaria disponível para estar cuidando do filtro de spam, achei melhor sugerir uma solução paga, pois o fluxo de spam também depende muito da educação dos usuários (eles sempre acabam usando o e-mail corporativo para cadastros em sites), irei usar futuramente o Amavis em outro cliente.

Se quiser copie e cole, ou altere conforme a sua necessidade.

Configurações principais do Postfix:
# vim /etc/postfix/main.cf

# postfix config file

# uncomment for debugging if needed
#soft_bounce=yes

# postfix main
mail_owner = postfix
setgid_group = postdrop
delay_warning_time = 4

# postfix paths
html_directory = no
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
queue_directory = /var/spool/postfix
sendmail_path = /usr/sbin/sendmail.postfix
newaliases_path = /usr/bin/newaliases.postfix
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
sample_directory = /usr/share/doc/postfix-2.2.2/samples
readme_directory = /usr/share/doc/postfix-2.2.2/README_FILES

# network settings
inet_interfaces = all
mydomain = yourdomain.com
myhostname = host.yourdomain.com
mynetworks = $config_directory/mynetworks
mydestination = $myhostname, localhost.$mydomain, localhost
relay_domains = proxy:mysql:/etc/postfix/mysql_relay_domains_maps.cf

# mail delivery
recipient_delimiter = +

# mappings
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
transport_maps = hash:/etc/postfix/transport
#local_recipient_maps =

# virtual setup
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf,regexp:/etc/postfix/virtual_regexp
virtual_mailbox_base = /home/vmail
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_mailbox_limit_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
virtual_minimum_uid = 101
virtual_uid_maps = static:101
virtual_gid_maps = static:12 #Número do grupo mail, se for diferente de 12 troque.
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1

# debugging
debug_peer_level = 2
debugger_command =
PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
xxgdb $daemon_directory/$process_name $process_id sleep 5

# authentication
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
broken_sasl_auth_clients = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth

# tls config
smtp_use_tls = yes
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
smtp_tls_session_cache_database = btree:$data_directory/smtp_tls_session_cache
# Change mail.example.com.* to your host name
smtpd_tls_key_file = /etc/pki/tls/private/mail.seudominio.com.br.key
smtpd_tls_cert_file = /etc/pki/tls/certs/ mail.seudominio.com.br.crt
# smtpd_tls_CAfile = /etc/pki/tls/root.crt

# rules restrictions
smtpd_client_restrictions =
smtpd_helo_restrictions =
smtpd_sender_restrictions =
smtpd_recipient_restrictions = permit_sasl_authenticated,
permit_mynetworks,
reject_unauth_destination,
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
reject_unknown_recipient_domain
# Se quiser checagem via black list é só descomentar as linhas abaixo
#,reject_rbl_client zen.spamhaus.org
#,reject_rbl_client bl.spamcop.net
#,reject_rbl_client dnsbl.sorbs.net

smtpd_helo_required = yes
unknown_local_recipient_reject_code = 550
disable_vrfy_command = yes
smtpd_data_restrictions = reject_unauth_pipelining

Fontes:
http://www.vivaolinux.com.br/artigo/Postfix-+-MySQL-+-Submission-Port-+-Dovecot-+-Postfix-Admin-no-CentOS-63/
https://www.digitalocean.com/community/tutorials/how-to-create-a-ssl-certificate-on-apache-for-centos-6
http://serverfault.com/questions/488425/centos-genkey-command-not-found

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *