Após a instalação do ISPConfig o Servidor de Email já ficou pronto para uso com o Postfix e o Dovecot. O que precisamos fazer é acertar algumas configurações e aprender a usá-lo.
O Servidor de Emails é um dos serviços mais procurados no Fator Binário e também o mais problemático. Dezenas de pessoas solicitam minha ajuda todos os meses, sendo que a grande maioria destes problemas são causados por configuração errada.
Neste artigo mostrarei como criar contas de email no ISPConfig, instalar o DKIM, desativar o certificado TLS obrigatório na porta 587 e instalar a última versão do Roundcube no NginX.
* Na Digital Ocean a porta 25 (SMTP) está bloqueada por padrão para contas novas. Se quiser enviar emails externamente então será necessário abrir um ticket de suporte com eles e dizer que deseja abrir a porta 25 para envio de emails. O suporte responderá o ticket em alguns minutos solicitando mais informações suas. Envie as informações adicionais que eles liberam a conta para envios. *O processo todo da solicitação até a liberação leva menos de 30 minutos.
* Acesse o terminal SSH como superusuário root para executar os comando de instalação e configuração.
No painel admin do ISPConfig pode-se facilmente criar e gerenciar contas e domínios de email. É possível criar contas novas, redirecionamentos para outras contas ou catch-all, filtros, etc..
Acesse o menu de emails: ISPConfig → Correio
1a ⇒ Crie um domínio de email: ISPConfig → Correio → Domínio → Adicionar novo domínio
Preencha o nome do domínio no terceiro campo e clique em Salvar. Pode-se deixar as demais opções padrão. Lembre-se que “nome do domínio” não deverá ser escrito com o “www”. Exemplo correto: meudominio.com.br
1b ⇒ Crie uma caixa de email para o domínio: ISPConfig → Correio → Caixa de correio → Adicionar nova caixa de correio
Preencha os campos abaixo deixando o restante padrão:
» Nome Real: <– Seu nome
» Correio Alias: <– contato (isso será a sua conta de email, selecione ao lado para qual domínio está criando a caixa)
» Senha: <– Digite uma senha segura e repita no próximo campo
» Clique em Salvar
1c ⇒ Acesse a conta. Quando instalamos o ISPConfig o SquirrelMail foi instalado junto, para acessá-lo digite a URL http://IP_DO_SERVIDOR:8081/squirrelmail. Digite o nome da conta com o domínio e a sua senha cadastrada para a caixa.
• Note que mesmo criando a conta e podendo acessá-la ainda é necessário direcionar o DNS do domínio para o VPS. Enquanto a tabela não estiver propagada não poderemos receber emails externos. Podemos enviar, mas como ainda falta a tabela DNS e os registros DKIM e SPF, dificilmente eles chegarão na caixa de entrada do destinatário. Mais adiante neste tutorial veremos como criar a tabela.
• Dica: Após criar uma caixa de email para o domínio acesse no menu esquerdo a opção “Correio Catchall” digitando o domínio e a conta que receberá os emails. Isso fará com que todos os emails enviados para qualquer endereço daquele domínio, e que não tenha caixa, sejam redirecionados para a conta principal.
O DKIM é necessário para que os emails sejam assinados e certificados pelo servidor, isso ajuda a não serem marcados como SPAM. *A partir do ISPConfig 3.1 essa funcionalidade será incorporada ao painel, mas por enquanto temos que configurá-la manualmente.
Na instalação do ISPConfig pelo script o OpenDKIM já foi baixado, temos apenas que configurá-lo.
2a ⇒ Edite o arquivo /etc/opendkim.conf e adicione as seguintes linhas ao final:
SubDomains yes AutoRestart Yes AutoRestartRate 10/1h UMask 002 Syslog yes SyslogSuccess Yes LogWhy Yes Canonicalization relaxed/simple ExternalIgnoreList refile:/etc/opendkim/TrustedHosts InternalHosts refile:/etc/opendkim/TrustedHosts KeyTable refile:/etc/opendkim/KeyTable SigningTable refile:/etc/opendkim/SigningTable Mode sv PidFile /var/run/opendkim/opendkim.pid SignatureAlgorithm rsa-sha256 UserID opendkim:opendkim Socket inet:12301@localhost
2b ⇒ Edite o arquivo /etc/default/opendkim e adicione a seguinte linha ao final:
SOCKET="inet:12301@localhost"
2c ⇒ Altere o Postfix para enviar emails usando o protocolo IPV4 somente, isso evitará mensagens de erro “network is unreachable” em emails enviados para contas Gmail, e também fará com que os emails não sejam marcados como SPAM no Gmail. Edite o arquivo /etc/postfix/main.cf:
# Linha 50: Altere de all para ipv4 inet_protocols = ipv4
2d ⇒ Como estamos configurando o OpenDKIM para assinar os emails temos que desativar o filtro do Amavis no Postfix e adicionar os do próprio OpenDKIM . Edite o arquivo /etc/postfix/main.cf:
# Comente as 2 linhas abaixo inserindo um sinal de "#" no início #content_filter = amavis:[127.0.0.1]:10024 #receive_override_options = no_address_mappings # E logo abaixo adicione estas 4 linhas milter_protocol = 2 milter_default_action = accept smtpd_milters = inet:localhost:12301 non_smtpd_milters = inet:localhost:12301
2e ⇒ Crie os arquivos para as chaves DKIM (mas somente execute este procedimento se você ainda não adicionou nenhuma chave DKIM neste servidor pois os arquivos serão zerados):
root# mkdir -p /etc/opendkim/keys; touch /etc/opendkim/TrustedHosts; touch /etc/opendkim/KeyTable; touch /etc/opendkim/SigningTable
2f ⇒ Edite os 3 arquivos abaixo adicionando os domínios conforme exemplo:
• Arquivo /etc/opendkim/TrustedHosts:
127.0.0.1 localhost 192.168.0.1/24 #Adicione todos os seus dominios abaixo: *.fatorbinario.com #*.segundo_dominio.com #Para o domínio principal também será necessário adicionar esta linha com o nome do hostname (verifique qual o seu hostname, que deve ser o mesmo nome dado ao VPS): debian8.fatorbinario.com
• Arquivo /etc/opendkim/KeyTable:
#Note que isso deverá ser escrito em uma linha única: mail._domainkey.fatorbinario.com fatorbinario.com:mail:/etc/opendkim/keys/fatorbinario.com/mail.private #Pode-se usar uma única chave para todos os seus domínios, para isso não há necessidade de se adicionar outros domínios neste arquivo pois podemos direcionar as chaves no próximo arquivo SigningTable. Mas caso opte em criar uma chave para cada domínio replique a linha acima e substitua fatorbinario.com para cada um
• Arquivo /etc/opendkim/SigningTable:
*@fatorbinario.com mail._domainkey.fatorbinario.com #Temos ainda que apontar o subdomínio do hostname que adicionamos no arquivo TrustedHosts para a chave do domínio principal. : *@debian8.fatorbinario.com mail._domainkey.fatorbinario.com #Note que podemos usar este mesmo "truque" para apontar todos os outros domínios para a mesma chave desta maneira (mas caso não queira usar a mesma chave replique a primeira linha substituindo os domínios): #*@segundo_dominio.com mail._domainkey.fatorbinario.com
2g ⇒ Crie um subdiretório para cada domínio que terá uma chave (note que não há necessidade de fazer isso para os domínios que optou em apontar para a mesma chave principal). Em seguida crie a chave, substituindo fatorbinario.com pelo seu domínio:
root# mkdir /etc/opendkim/keys/fatorbinario.com root# cd /etc/opendkim/keys/fatorbinario.com root# opendkim-genkey -s mail -d fatorbinario.com root# chown opendkim:opendkim mail.private
* Serão criados 2 arquivos. O arquivo mail.private contém a chave privada do domínio e o arquivo mail.txt a chave pública que usaremos para configurar o DNS
* * Exemplo de configuração de chave DKIM na tabela DNS (copie a chave de mail.txt):
Type: TXT Name: mail._domainkey.fatorbinario.com. Text: “v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDs0+Ep6l2g9SgVvJayx5SMZeV1+9AVN7FGkZO4FLWrigG7O69neoj+FSFwI3ATvXUITvQojlP2QMbMj3ffjZpBpZeK0JjS75rcWRmf66d/Q9MyUv7AaHq801OD1dZkv+NbXJh5bl7AbtKzV4AklNrJZPNkpLmcnDqyW0Ii+ePrawICCQAB” #Note que no arquivo mail.txt existe um texto adicional após fechar as aspas duplas da chave. Certifique-se de não colar aquele comentário ao adicionar a entrada. Cole a sua chave no registro da tabela DNS conforme mostrado acima com as aspas duplas incluídas #Note também que nesta última versão há um bug na geração da chave pública. Tem um abre aspas e uma tabulação antes da instrução da chave começcando em "p=". É necessário limpar aquela formatação adicional. #Opcionalmente você pode gerar as chaves pública e privada neste link: http://dkimcore.org/tools/keys.html basta digitar o domínio e gerar, em seguida copie a chave pública para criar o registro na tabela e baixe a chave privada para o servidor.
2h ⇒ Reinicie o Postfix e o OpenDKIM:
root# /etc/init.d/postfix restart root# /etc/init.d/opendkim restart
Quando instalamos o ISPConfig automaticamente adicionamos um certificado SSL genérico para emails que é usado pela porta de envio SMTP 587. O problema é que alguns clientes de email como o Outlook não reconhecem o certificado, e conforme a versão, continuam solicitando a validação infinitamente.
O aviso que aparece no Microsoft Outllok normalmente é este: “The server you are connected to is using a security certificate that cannot be verified ou este: O certificado de segurança foi emitido por uma empresa na qual você não escolheu confiar“
3a ⇒ Edite o arquivo /etc/postfix/master.cf:
#Comente com um sinal de "#" entre as linhas 17 a 29 e logo abaixo na linha 30 abra um espaço com ENTER e adicione o segundo bloco de código: #submission inet n - - - - smtpd # -o syslog_name=postfix/submission # -o smtpd_tls_security_level=encrypt # -o smtpd_sasl_auth_enable=yes # # -o smtpd_client_restrictions=permit_sasl_authenticated,reject # -o smtpd_reject_unlisted_recipient=no # -o smtpd_client_restrictions=$mua_client_restrictions # -o smtpd_helo_restrictions=$mua_helo_restrictions # -o smtpd_sender_restrictions=$mua_sender_restrictions # -o smtpd_recipient_restrictions= # -o smtpd_relay_restrictions=permit_sasl_authenticated,reject # -o milter_macro_daemon_name=ORIGINATING #Segundo bloco de código submission inet n - - - - smtpd -o syslog_name=postfix/submission -o smtpd_enforce_tls=no -o smtpd_tls_security_level=may -o smtpd_tls_auth_only=no -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject # -o milter_macro_daemon_name=ORIGINATING
3b ⇒ Reinicie o Postfix:
root# /etc/init.d/postfix restart
NOTA: A alteração acima fará com que o certificado TLS não seja “forçado” ou obrigatório para os envios. Mas a partir de agora quando configurar o Outlook será necessário marcar a opção “Meu servidor de saída (SMTP) requer autenticação” na aba “Servidor de saída” nas configurações avançadas da conta.
Na última versão do script instalador do ISPConfig (Parte 3 deste tutorial) o Roundcube já foi instalado. Mas caso não tenha seguido aquela parte então proceda com os passos abaixo.
4a ⇒ Baixe e instale a última versão disponível do repositório Debian Backports:
root# echo deb http://mirrors.digitalocean.com/debian jessie-backports main > /etc/apt/sources.list.d/jessie-backports.list root# apt-get update root# apt-get install -t jessie-backports roundcube » Deseja continuar <-- ENTER » Configure database for roundcube with dbconfig-common?: <-- Yes » Database type to be used with roundcube: <-- mysql » Password of the database's administrative user: <-- Digite a senha de administrador do MySQL » MySQL application password for roundcube: <-- Deixar em branco
4b ⇒ Edite o arquivo /etc/roundcube/config.inc.php e modifique as linhas:
#Linha 35: $config['default_host'] = 'localhost'; #Linha 47: $config['smtp_server'] = 'localhost'; #Linha 75: Modifique o array para que fique assim: $config['plugins'] = array('jqueryui', 'ispconfig3_account', 'ispconfig3_autoreply', 'ispconfig3_pass', 'ispconfig3_spam', 'ispconfig3_fetchmail', 'ispconfig3_filter');
4c ⇒ Se desejar integrar o Roundcube ao ISPConfig, para que o usuário possa trocar a senha, instale os plugins e conserte o link simbólico do jQueryUI para não floodar os arquivos de log com mensagens de erro (para resumir os comandos irei colocá-los todos na mesma linha, se der erro durante a instalação me avisem nos comentários. Lembrem-se que é só copiar e colar no terminal com o botão direito do mouse):
root# cd /tmp; git clone https://github.com/w2c/ispconfig3_roundcube.git; cd /tmp/ispconfig3_roundcube/; mv ispconfig3_* /usr/share/roundcube/plugins/; cd /usr/share/roundcube/plugins/; mv ispconfig3_account/config/config.inc.php.dist ispconfig3_account/config/config.inc.php; ln -s /usr/share/roundcube/plugins/ispconfig3_* /var/lib/roundcube/plugins/; cd /var/lib/roundcube/plugins/jqueryui; rm config.inc.php; ln -s config.inc.php.dist config.inc.php
4d ⇒ Adicione um usuário remoto para o Roundcube no ISPConfig:
Acesse: ISPConfig → Sistema → Usuário Remotos → Adicionar novo usuário
» Nome do Usuário <– roundcube
» Senha <– digite uma senha segura e repita no próximo campo
» Marque somente as opções abaixo:
(1) Server functions (3) Funções de Cliente (8) Funções de usuário de correio (9) Funções de aliases de correio (16) Funções de spamfilter de usuário de correio (17) Funções de política de spamfilter de correio (18) Funções de fetchmail (19) Mail spamfilter whitelist functions (20) Mail spamfilter blacklist functions (21) Funções de filtro de correio de usuário
» Clique em Salvar
4e ⇒ Edite o arquivo /usr/share/roundcube/plugins/ispconfig3_account/config/config.inc.php
<?php $rcmail_config['identity_limit'] = false; $rcmail_config['remote_soap_user'] = 'roundcube'; $rcmail_config['remote_soap_pass'] = 'senha_roundcube_cadastrada_acima'; $rcmail_config['soap_url'] = 'https://debian8.fatorbinario.com:8080/remote/'; ?> * Preste atenção para não usar o número IP em soap_url, escreva o hostname conforme mostrado. Este é o endereço pelo qual você acessa o ISPConfig ** Note ainda que neste tutorial isso é obrigatório pois devido a algumas mudanças de segurança no Debian 8 não é possível apontar pelo número IP *** Adicione uma entrada Tipo A ou CNAME na tabela DNS do domínio principal do servidor com o prefixo do hostname, exemplo debian8 (isso é para que o roundcube possa encontrar o servidor pelo nome: exemplo debian8.fatorbinario.com). E caso você use a CloudFlare deverá deixar a nuvem desativada para este registro.
4f ⇒ Copie o certificado SSL do ISPConfig para que a URL SOAP acima funcione:
root# cp /usr/local/ispconfig/interface/ssl/ispserver.crt /usr/local/share/ca-certificates/ispserver.crt root# update-ca-certificates
4g ⇒ Edite o arquivo /etc/php5/fpm/php.ini (nginx):
#Descomente a linha 1940 (removendo o ponto e vírgula do início) e altere o valor para:
openssl.cafile=/etc/ssl/certs/ca-certificates.crt
4h ⇒ Reinicie o NginX e o PHP:
root# /etc/init.d/nginx restart root# /etc/init.d/php5-fpm restart
4i ⇒ Diretiva NginX para o Roundcube:
Acesse: ISPConfig → Sites → <selecione um site na lista> → aba Opções
Na caixa “nginx Directives” adicione o código abaixo. *Será necessário adicionar este bloco de diretivas para cada site que irá acessar o Roundcube pelo atalho /webmail ou /roundcube do domínio:
client_max_body_size 100M; location /roundcube { root /var/lib/; index index.php index.html index.htm; location ~ ^/roundcube/(.+\.php)$ { try_files $uri =404; root /var/lib/; include /etc/nginx/fastcgi_params; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; } location ~* ^/roundcube/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /var/lib/; } location ~* /.svn/ { deny all; } location ~* /README|INSTALL|LICENSE|SQL|bin|CHANGELOG$ { deny all; } } location /webmail { rewrite ^/* /roundcube last; }
* Após adicionar as diretivas NginX no site já pode-se acessar o RoundCube pelo endereço: http://seusite.com.br/webmail
• E por último, Aprenda a configurar os principais clientes de email (lembre-se que para o envio e recebimento externo funcionarem corretamente a tabela DNS deverá estar devidamente propagada e apontando para o servidor, e a porta 25 SMTP liberada pela Digital Ocean):
Link para o tutorial : https://fatorbinario.com/servidor-de-email-desativando-o-certificado-ssl-para-autenticacao-das-contas/#clientesdeemail
Índice do Tutorial:
- Tutorial Debian 8 x64 com ISPConfig e NginX: Índice
- Tutorial Debian 8 x64 com ISPConfig e NginX: Servidor de Email
- Tutorial Debian 8 x64 com ISPConfig e NginX: Tabela DNS
- Tutorial Debian 8 x64 com ISPConfig e NginX: Instalação do Site
- Tutorial Debian 8 x64 com ISPConfig e NginX: Configurações Adicionais
- SMTP Relay com Postfix e SparkPost
- DigitalOcean Block Storage: Aprenda como adicionar mais espaço ao servidor
- Tutorial SSL com Lets Encrypt: Certificado gratuito e homologado para lojas virtuais
- Tutorial Debian 8 x64 com ISPConfig e NginX: Deploy do Linux
- Tutorial Debian 8 x64 com ISPConfig e NginX: ISPConfig 3
- Tutorial Debian 8 x64 com ISPConfig e NginX: Otimizando a Instalação
- Tutorial Debian 8 x64 com ISPConfig e NginX: Firewall