Montando um servidor de E-mail Completo com Postfix+Dovecot+PostfixAdmin+SpamAssassin+SPF+RoundCubeMail+IPv4/IPv6 (Desatualizado)
Um novo tutorial mais atualizado em: https://blog.remontti.com.br/3744
Neste tutorial vou ensinar como configurar um servidor de e-mail com domínios virtuais com integração dos usuários/domínios no banco de dados MySQL.
– Postfix para nosso MTA.
– Dovecot como servidor Imap e Pop.
– Postfixadmin para o gerenciamento de contas de Emails e domínios
– Spamassassin, Clamav e o Amavis para controle de Anti-Spam e Anti-Vírus
– RoundCubeMail para Webmail
OBS: Não vou entrar em muitos detalhes, pois o tuto já ficou bem longo. E desculpe pelos erros de portuga, mas vou fazendo na corrida.
CENÁRIOS
IP: 250.250.0.6 / 2000:fff:250:250:0::6
Reverso sobre os IPS 250.250.0.6 / 2000:fff:250:250:0::6: mail.dominiorev.com.br
Domínios virtuais: remontti.com.br / dominiorev.com.br / você pode ter diversos
REQUISITOS
1 – Ter configurado DNS Autoritativo e Reverso sobre seus IPS. (Não necessariamente no mesmo servidor)
2 – Debian 8 Jessie recomendo uma instalação limpa do Debian
3 – Serviço Web Rodando
4 – Servidor Atualizado: # apt update && apt upgrade
AJUSTES
Ajuste o nome do servidor alterando alguns parâmetros do sistema.
# vim /etc/hosts
127.0.0.1 localhost 250.250.250.6 mail.dominiorev.com.br mail {...}
# vim /etc/hostname
Configure sua interface de rede. Vou deixar um modelo, onde o bloco de IPv4 é um /28 (255.255.255.240) e um /64 para IPv6. Estou usando IPs com base no cenário apresentado no tutorial [Servidor DNS Recursivo, Autoritativo e Reverso com Bind9 (IPv4+IPv6)]
# vim /etc/network/interfaces
auto eth0 iface eth0 inet static address 250.250.0.6 netmask 255.255.255.240 network 250.250.0.0 broadcast 250.250.0.15 gateway 250.250.0.1 # dns-* options are implemented by the resolvconf package, if installed dns-nameservers 250.250.0.2 dns-search ns1.dominiorev.com.br #v6 iface eth0 inet6 static pre-up modprobe ipv6 address 2000:fff:250:250:0::6 netmask 64 gateway 2000:fff:250:250:0::1
Reinicie seu servidor
# reboot
OBS: Lembrando que a rota default é entregue via route advertise, então se você não estiver entregando desta forma será necessários criar uma rota estática, no Debian você pode adicionar o seguinte parâmetro em /etc/rc.local ( ip -6 route add ::/0 via 2000:fff:250:250:0::1 ) assim toda vez que o sistema inicializar sua rota default (gateway) IPv6 é configurada é configurado.
POSTFIX / DOVECOTE
O Postfix é um agente de transferência de emails (MTA = Message Transfer Agent), um software livre para envio e entrega de emails. Rápido e fácil de administrar, muito utilizado em servidores UNIX.
Algumas vantagens:
– Suporte a Ipv6
– Suporte a MIME
– Autenticação SASL
– Canal seguro utilizando TLS
– Suporte a banco de dados(MySQL,PostgreSQL,LDAP,entre outros)
– Verificação a listas RBL
– Extenso suporte a filtros
– Suporte a expressão-regular
– Verificação de cabeçalho
– Verificação no corpo da mensagem
– Suporte a Greylisting e SPF através de plugins.
Dovecot é um servidor de IMAP e POP3 open source para sistemas Linux e UNIX, escrito primariamente com segurança em mente, tem o objetivo primário de ser um servidor de email leve, rápido e de fácil configuração. Dovecot suporta mbox, Maildir e seu próprio formato nativo de alta performance, Dbox. É 100% compatível com clientes de emails acessando as caixas de correio diretamente. Também inclui um agente de entrega de emails com suporte opcional a filtros Sieve, o que acho muito legal!
Vamos a instalação, não esqueça de antes ter instalado Serviço Web
# apt update && apt upgrade # apt install dovecot-common dovecot-mysql dovecot-imapd dovecot-pop3d dovecot-lmtpd postfix postfix-mysql openssl php5-imap dovecot-sieve dovecot-managesieved
Se seu DNS reverso estiver ok ele virá já com o domínio reverso de seu IP, mas isso não é necessariamente ser o nome do ip rever, mas eu recomendo que tenha confurado o reverso para o seu servidor de e-mail.
mail.dominiorev.com.br
Verifique o arquivo /etc/mailname e sertifique-se que seja seu domínio.
# vim /etc/mailname
mail.dominiorev.com.br
Restarte o apache pois instalamos o pacote php5-imap
# /etc/init.d/apache2 restart
Adicione um e-mail para seu usuário root do Linux
# vim /etc/aliases
root: postmaster@dominiorev.com.br
# newaliases
POSTFIXADMIN
Instalaremos nosso PostfixAdmin para gerenciar nossos dominios e e-mail.
Inicialmente vamos criar nosso banco de dados MySQL.
Não esqueça de alterar a SENHA.
# mysql -uroot -p -e "CREATE DATABASE postfix; GRANT ALL PRIVILEGES ON postfix.* TO 'postfix'@'localhost' IDENTIFIED BY '<strong>SENHA</strong>';"
Será solicitado a senha do usuários root do mysql.
Vamos baixar o PostfixAdmin, hoje (Jan 2017) o projeto está em sua versão 3.0 https://sourceforge.net/projects/postfixadmin/. Vou baixa-lo no diretório padrão do Apache2, faça de acordo com o seu cenário. Após vou extrai-lo, renomeá-lo e setar as permissões necessárias.
# cd /var/www/html/ # wget --no-check-certificate --content-disposition http://sourceforge.net/projects/postfixadmin/files/latest/download?source=files # tar xfvz postfixadmin-*.tar.gz # mv postfixadmin*/ postfixadmin # chown www-data:www-data -R postfixadmin # cd postfixadmin # cp config.inc.php config.inc.php.orig
Editamos o config.inc.php para fazer algumas alterações e conectar com nosso banco de dados.
# vim config.inc.php
Procure pelas seguintes linhas e altere conforme a baixo.
$CONF['configured'] = true; $CONF['default_language'] = 'pt-br'; $CONF['database_type'] = 'mysql'; $CONF['database_host'] = 'localhost'; $CONF['database_user'] = 'postfix'; $CONF['database_password'] = 'SENHA'; $CONF['database_name'] = 'postfix'; # Defina o tipo de criptografia para as senhas salvas no BD. $CONF['encrypt'] = 'md5';
# cp config.inc.php config.local.php
Como existe varias alterações “change-this-to-your.domain.tld” vou usar o comando sed para alterar todas de uma única vez. Não esqueça de substituir pelo seu dominio.
# sed -i 's/change-this-to-your.domain.tld/dominiorev.com.br/' config.inc.php
Acesse:
http://SEU-DOMINO/postfixadmin/setup.php
No primeiro acesso suas tabelas já serão criadas no seu bd, você deve ter todas as dependências OK.
Se deparar com o erro: “ERROR: the templates_c directory doesn’t exist or isn’t writeable for the webserver” crie o diretório templates_c com # mkdir templates_c && chown www-data. templates_c
Bem no final temos: Change setup password
Preencha os campos Setup password com uma senha e repita (Essa senha será necessária pra criar administradores do PostfixAdmin) e clique em Generate password hash
Voce vai receber uma mensagem parecida com essa:
If you want to use the password you entered as setup password, edit config.inc.php or config.local.php and set
$CONF[‘setup_password’] = ‘ca06e6cd4df066ac8e7999616a773b00:51508f16ca5ef631a5ed23ccc44160d934375ec5’;
Esta senha criptografada, será necessários informar no arquivo config.inc.php antes de prosseguir. Então vamos a edição.
# vim config.inc.php
Localize:
$CONF['setup_password'] = 'changeme';
Altere para:
$CONF['setup_password'] = 'ca06e6cd4df066ac8e7999616a773b00:51508f16ca5ef631a5ed23ccc44160d934375ec5';
Salve se arquivo e volte para seu navegador. Em Create superadmin account vamos criar nosso usuário administrador do PostfixAdmin.
Nos campos:
Setup password = Informe a senha q você gerou no passo anterior.
Administrador: = um endereço email que será o seu login (postmaster@dominiorev.com.br)
Clique em Criar administrador
Deve retornar a mensagem:
Administrador criado! (postmaster@dominiorev.com.br) You are done with your basic setup. You can now login to PostfixAdmin using the account you just created.
Agora por segurança vamos acessar nosso diretório do postfixadmin (/var/www/html/postfixadmin) e renomear o arquivo setup.php
# mv setup.php QLQRNOME_setup.php
Acesse: http://SEU-DOMINO/postfixadmin/
Já é possível acessa-lo com nosso usuários administrador, e adicionar seus domínios e contas de e-mails.
Domínios => Criar Domínio
Virtual => Criar conta de Email
Dado continuidade criaremos nosso usuários vmail que será o “cara” responsável pelo trabalho.
# groupadd -g 5000 vmail # useradd -g vmail -u 5000 vmail -d /var/vmail # mkdir /var/vmail # chown vmail:vmail /var/vmail
Edite o arquivo /etc/postfix/main.cf
# cp /etc/postfix/main.cf /etc/postfix/main.cf.orig # vim /etc/postfix/main.cf
Altere e adicione como descrito abaixo.
#--------ALTERE--------# smtpd_banner = $myhostname myorigin = $myhostname mydestination = localhost #--------COMENTE--------# #relayhost = #mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 #mailbox_size_limit = 0 #--------ADD AO FINAL--------# # Authentification smtpd_sasl_type=dovecot smtpd_sasl_path=private/auth smtpd_sasl_auth_enable = yes smtpd_sasl_authenticated_header = yes smtpd_sender_login_maps = proxy:mysql:/etc/postfix/mysql_sender_login_maps.cf broken_sasl_auth_clients = yes # Virtual mailboxes local_transport = virtual virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf virtual_mailbox_base = /var/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_minimum_uid = 104 virtual_transport = virtual #virtual_transport = dovecot ????????/ ql ? virtual_uid_maps = static:5000 virtual_gid_maps = static:5000 dovecot_destination_recipient_limit = 1 ###### EXTRAS COMENTADO ####### # Tamanho maximo do anexo (21 MB) # No webmail php deve permitir upar esse tamanho message_size_limit = 22020096 # Um pouco mais de protecao contra spam disable_vrfy_command = yes # A RFC 821 basicamente exige que os enderecos sejam envelopados ou contidos por <>. # Seguir esta regra faz com que se use essa notacao na sessao SMTP. Isso ajuda a barrar alguns Mailers. strict_rfc821_envelopes = yes # Caixa postal inexistente devolver aosender o erro 500, # desta forma daqui alguns minutos voce nao precisara processar novamente o mesmo spam. unknown_local_recipient_reject_code = 500 # E rejeitar com erro 554 enderecos desconhecidos unknown_address_reject_code = 554 # Tambem com o erro 554 podemos rejeitar as conexoes que venham de hostnames desconhecidos unknown_hostname_reject_code = 554 # Os cliente desconhecidos tambem rejeitaremos com o mesmo erro unknown_client_reject_code = 554 # Vamos definir que o servidores remotos podem fazer no maximo 10 # conexõsimultaneas (e um valor que trabalho, editem conforme a necessidade). # Um spammer faz mais de 20 smtp_destination_recipient_limit = 10 # Vamos definir que a conexao so pode cometer 3 erros de codigos 500 # (erros definitivos), apos isto sera desconectado smtpd_hard_error_limit = 3 # Para erros de codigo 400 (erros temporarios), podemos desconecta-los na primeira smtpd_soft_error_limit = 1 # Bom, claro que o spammer tambem pode ser desconectado e depois se reconectar, # entao vamos nos prevenir destes espertinhos definindo quantas conexoes ele pode fazer por minuto. smtpd_client_connection_count_limit = 10 # Nestas conexoes vamos limitar quantas mensagens ele pode mandar por minuto, # no meu caso uso 25. Se algum usuario seu reclamar deste limite, # classifique-o como ninja ou na pior hipotese, um mail maniaco. smtpd_client_message_rate_limit = 25 # Deixar um spammer maluco e faze-lo perder tempo. Dificilmente um servidor conectado # ao seu servidor vai cometer erros, os spammer cometem muitos erros, pois eles ficam tentando. # Para irrita-los e quem sabe um dia desistirem de mim, eu travo eles dentro do meu servidor a cada erro. # No meu caso, a cada erro eu os travo por 20 segundos. Ate que diminuiu o numero de spammers no meu servidor, # devo estar na blacklist deles.rs smtpd_error_sleep_time = 20 # Para este tipo de problema, os spammers podem resetar os erros deles. # Para evitar que eles facam isto e sejam desconetados, podemos dizer se eles podem ou nao fazer isto. # Como colher de cha, vamos deixar fazer isto apenas uma vez (ate porque servidores as vezes usam este comando). # Permitir a maquina remota dar o comando RSET apenas 1 vez. smtpd_junk_command_limit = 1 # Defina tambem o numero maximo de destinatarios em uma unica mensagem. # Utilize o numero que melhor lhe convir, entreviste pessoas chaves se necessarios. smtpd_recipient_limit = 50 # Os spammers nao se preocupam muito com isto, # entao uma otima pratica para bloquear spams eh # tornar a identificacao por HELO/EHLO obrigatoria. smtpd_helo_required = yes # Um pouco mais sobre o HELO/EHLO eh definir um tempo # limite para o servidor fazer a identificacao, um # servidor serio nao tem porque ficar enrolando. # Vai diminuindo o tempo e observando os resultados. # Vamos comecar com 60 segundos smtp_helo_timeout = 60s smtpd_helo_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_invalid_helo_hostname, reject_non_fqdn_helo_hostname, reject_unknown_helo_hostname, reject_unauth_pipelining smtpd_sender_restrictions = reject_non_fqdn_sender, reject_unknown_sender_domain, reject_unlisted_sender, reject_authenticated_sender_login_mismatch, permit_sasl_authenticated, permit_mynetworks smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination, reject_unknown_reverse_client_hostname, reject_invalid_hostname, reject_non_fqdn_hostname, reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unknown_sender_domain, reject_unknown_recipient_domain, reject_unauth_pipelining, reject_rbl_client zen.spamhaus.org, reject_rbl_client bl.spamcop.net, reject_rbl_client dnsbl.sorbs.net, permit
OBS RBLs: zen.spamhaus.org, bl.spamcop.net, dnsbl.sorbs.net
Caso não queira utilizar remova os campos reject_rbl_client ou se desejar adicionar outras…
Mais informações você encontra em:
http://www.postfix.org/VIRTUAL_README.html#virtual_mailbox
Precisamos criar 4 arquivos que farão a conexão com o BD, pra facilitar criamos nossa variável MINHASENHA
Vamos criar uma variável com o valor da senha que foi criada para o usuarios postfix do mysql, assim ira facilitar.
# MINHASENHA='sua-senha-do-usuario-postifix-do-mysql'
Não use $ ou # em sua senha
mysql_virtual_alias_maps.cf
# echo " hosts = localhost user = postfix password = $MINHASENHA dbname = postfix query = SELECT goto FROM alias WHERE address='%s' AND active = '1' " >> /etc/postfix/mysql_virtual_alias_maps.cf
mysql_virtual_mailbox_maps.cf
# echo " hosts = localhost user = postfix password = $MINHASENHA dbname = postfix query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1' " >> /etc/postfix/mysql_virtual_mailbox_maps.cf
mysql_sender_login_maps.cf
# echo " hosts = localhost user = postfix password = $MINHASENHA dbname = postfix query = SELECT username AS allowedUser FROM mailbox WHERE username='%s' AND active = 1 UNION SELECT goto FROM alias WHERE address='%s' AND active = '1' " >> /etc/postfix/mysql_sender_login_maps.cf
mysql_virtual_domains_maps.cf
# echo " hosts = localhost user = postfix password = $MINHASENHA dbname = postfix query = SELECT domain FROM domain WHERE domain='%s' AND active = '1' " >> /etc/postfix/mysql_virtual_domains_maps.cf
Acesse o diretório de instalação e verifique se os arquivos com as iniciais mysql_* foram criados. Depois altere as permissões e grupos.
# cd /etc/postfix # ls -lh mysql_* # chmod o-rwx,g+r mysql_* # chgrp postfix mysql_*
Vamos as alterações no master.cf.
Faça um backup do arquivo original antes e adicione no final:
# cp /etc/postfix/master.cf /etc/postfix/master.cf.orig # vim /etc/postfix/master.cf
Adicione ao final:
# Dovecot dovecot unix - n n - - pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient}
Localize as seguintes linhas e descomente-as:
submission inet n - - - - smtpd -o syslog_name=postfix/submission -o smtpd_sasl_auth_enable=yes smtps inet n - - - - smtpd -o smtpd_tls_wrappermode=yes
Em altere os valores de smtpd_client_restrictions, os originais são diferentes. (veja na imagem abaixo como fica)
-o smtpd_client_restrictions=permit_sasl_authenticated,reject [...] -o smtpd_client_restrictions=permit_sasl_authenticated,reject
Configurando o Dovecot
Vou usar o comando sed para fazer as alterações necessárias em vez de ficarmos abrindo arquivo e editando.
# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.orig # sed -i -e 's/#listen/listen/' /etc/dovecot/dovecot.conf # cp /etc/dovecot/dovecot-sql.conf.ext /etc/dovecot/dovecot-sql.conf.ext.orig # sed -i -e 's/#driver =/driver = mysql/' /etc/dovecot/dovecot-sql.conf.ext
Se voce ainda não reiniciou a maquina sua variavel $MINHASENHA ainda está carregando sua senha, voce pode executar # echo $MINHASENHA ve se retorna ela. se não repita o comando
# MINHASENHA='sua-senha-do-usuario-postifix-do-mysql' # sed -i -e "s/#connect =/connect = host=localhost dbname=postfix user=postfix password=$MINHASENHA/" /etc/dovecot/dovecot-sql.conf.ext # sed -i -e 's/#default_pass_scheme/default_pass_scheme/' /etc/dovecot/dovecot-sql.conf.ext
Vamos inserir algumas linhas ao final de dovecot-sql.conf.ext.
# echo "" >> /etc/dovecot/dovecot-sql.conf.ext # echo "user_query = SELECT concat('/var/vmail/', maildir) as home, concat('maildir:/var/vmail/', maildir) as mail, 5000 AS uid, 5000 AS gid, concat('*:bytes=', (quota)) AS quota_rule FROM mailbox WHERE username = '%u' AND active = '1';" >> /etc/dovecot/dovecot-sql.conf.ext # echo "" >> /etc/dovecot/dovecot-sql.conf.ext # echo "password_query = SELECT username as user, password, concat('/var/vmail/', maildir) as userdb_home, concat('maildir:/var/vmail/', maildir) as userdb_mail, 5000 as userdb_uid, 5000 as userdb_gid, concat('*:bytes=', (quota)) AS userdb_quota_rule FROM mailbox WHERE username = '%u' AND active = '1';" >> /etc/dovecot/dovecot-sql.conf.ext
Alterações dos arquivos 10-auth.conf / 10-logging.conf / 10-ssl.conf
# cp /etc/dovecot/conf.d/10-auth.conf /etc/dovecot/conf.d/10-auth.conf.orig # sed -i -e 's/#disable_plaintext_auth = yes/disable_plaintext_auth = no/' /etc/dovecot/conf.d/10-auth.conf # sed -i -e 's/#auth_mechanisms = plain/auth_mechanisms = plain login/' /etc/dovecot/conf.d/10-auth.conf # sed -i -e 's/!include auth-system.conf.ext/#!include auth-system.conf.ext/' /etc/dovecot/conf.d/10-auth.conf # sed -i -e 's/#!include auth-sql.conf.ext/!include auth-sql.conf.ext/' /etc/dovecot/conf.d/10-auth.conf # cp /etc/dovecot/conf.d/10-logging.conf /etc/dovecot/conf.d/10-logging.conf.orig # sed -i -e 's/#log_path/log_path/' /etc/dovecot/conf.d/10-logging.conf # sed -i -e 's/#log_timestamp = "%b %d %H:%M:%S "/log_timestamp = "%Y-%m-%d %H:%M:%S "/' /etc/dovecot/conf.d/10-logging.conf # cp /etc/dovecot/conf.d/10-ssl.conf /etc/dovecot/conf.d/10-ssl.conf.orig # sed -i -e 's/ssl = no/#ssl = no/' /etc/dovecot/conf.d/10-ssl.conf # sed -i -e 's/#ssl_cert =/ssl_cert =/' /etc/dovecot/conf.d/10-ssl.conf # sed -i -e 's/#ssl_key =/ssl_key =/' /etc/dovecot/conf.d/10-ssl.conf
Criamos os certificados para o dovecot
# openssl req -new -x509 -days 3650 -nodes -out "/etc/dovecot/dovecot.pem" -keyout "/etc/dovecot/private/dovecot.pem"
Em 10-master.conf ficou complicado fazer alteração com sed então vamos no braço.
# cp /etc/dovecot/conf.d/10-master.conf /etc/dovecot/conf.d/10-master.conf.orig # vim /etc/dovecot/conf.d/10-master.conf
em :service auth {
COMENTE tudo de unix_listener auth-userdb
service auth { #unix_listener auth-userdb { #mode = 0666 #user = #group = #} #descomente unix_listener /var/spool/postfix/private/auth { mode = 0666 } #add unix_listener auth-master { mode = 0666 } #Descomente user = $default_internal_user }
Vamos criar um filtro para que todas as mensagens marcada com spam sejam movida para o diretórios SPAM.
# mkdir /var/lib/dovecot/sieve/ # cp /etc/dovecot/conf.d/90-sieve.conf /etc/dovecot/conf.d/90-sieve.conf.orig # sed -i -e 's/#sieve_default =/sieve_default =/' /etc/dovecot/conf.d/90-sieve.conf # sed -i -e 's/#sieve_global_dir =/sieve_global_dir = \/var\/lib\/dovecot\/sieve\/ /' /etc/dovecot/conf.d/90-sieve.conf # echo 'require ["fileinto"];' >> /var/lib/dovecot/sieve/default.sieve # echo '# rule:[Spam]' >> /var/lib/dovecot/sieve/default.sieve # echo 'if header :contains "X-Spam-Flag" "YES" {' >> /var/lib/dovecot/sieve/default.sieve # echo ' fileinto "Junk";' >> /var/lib/dovecot/sieve/default.sieve # echo '}' >> /var/lib/dovecot/sieve/default.sieve # sievec /var/lib/dovecot/sieve/default.sieve # chown -R vmail:vmail /var/lib/dovecot # cp /etc/dovecot/conf.d/10-mail.conf /etc/dovecot/conf.d/10-mail.conf.orig # sed -i -e 's/mail_location = mbox:~\/mail:INBOX=\/var\/mail\/%u/mail_location = mbox:~\/mail:INBOX=\/var\/vmail\/%u/' /etc/dovecot/conf.d/10-mail.conf
!Exatamente nessa ordem!
# sed -i -e 's/inbox = yes/inbox = yes\n /' /etc/dovecot/conf.d/10-mail.conf # sed -i -e 's/inbox = yes/inbox = yes\n } /' /etc/dovecot/conf.d/10-mail.conf # sed -i -e 's/inbox = yes/inbox = yes\n special_use = \Junk /' /etc/dovecot/conf.d/10-mail.conf # sed -i -e 's/inbox = yes/inbox = yes\n auto = subscribe /' /etc/dovecot/conf.d/10-mail.conf # sed -i -e 's/inbox = yes/inbox = yes\n mailbox Junk { /' /etc/dovecot/conf.d/10-mail.conf # sed -i -e 's/inbox = yes/inbox = yes\n } /' /etc/dovecot/conf.d/10-mail.conf # sed -i -e 's/inbox = yes/inbox = yes\n special_use = \Sent /' /etc/dovecot/conf.d/10-mail.conf # sed -i -e 's/inbox = yes/inbox = yes\n auto = subscribe /' /etc/dovecot/conf.d/10-mail.conf # sed -i -e 's/inbox = yes/inbox = yes\n mailbox Sent { /' /etc/dovecot/conf.d/10-mail.conf # sed -i -e 's/inbox = yes/inbox = yes\n } /' /etc/dovecot/conf.d/10-mail.conf # sed -i -e 's/inbox = yes/inbox = yes\n special_use = \Drafts /' /etc/dovecot/conf.d/10-mail.conf # sed -i -e 's/inbox = yes/inbox = yes\n auto = subscribe /' /etc/dovecot/conf.d/10-mail.conf # sed -i -e 's/inbox = yes/inbox = yes\n mailbox Drafts { /' /etc/dovecot/conf.d/10-mail.conf # sed -i -e 's/inbox = yes/inbox = yes\n } /' /etc/dovecot/conf.d/10-mail.conf # sed -i -e 's/inbox = yes/inbox = yes\n special_use = \Trash /' /etc/dovecot/conf.d/10-mail.conf # sed -i -e 's/inbox = yes/inbox = yes\n auto = subscribe /' /etc/dovecot/conf.d/10-mail.conf # sed -i -e 's/inbox = yes/inbox = yes\n mailbox Trash { /' /etc/dovecot/conf.d/10-mail.conf # sed -i -e 's/inbox = yes/inbox = yes\n /' /etc/dovecot/conf.d/10-mail.conf # sed -i -e 's/#mail_plugins =/mail_plugins = quota/' /etc/dovecot/conf.d/10-mail.conf
# cp /etc/dovecot/conf.d/20-managesieve.conf /etc/dovecot/conf.d/20-managesieve.conf.orig # vim /etc/dovecot/conf.d/20-managesieve.conf
Descomente:
# Uncomment to enable managesieve protocol: protocols = $protocols sieve service managesieve-login { } service managesieve { } protocol sieve { }
# cp /etc/dovecot/conf.d/15-lda.conf /etc/dovecot/conf.d/15-lda.conf.orig
Altere nos comandos (dominiorev.com.br) para seu domínio
!# sed -i -e 's/#mail_plugins = $mail_plugins/#mail_plugins = $mail_plugins\n postmaster_address = postmaster@dominiorev.com.br/' /etc/dovecot/conf.d/15-lda.conf # sed -i -e 's/#mail_plugins = $mail_plugins/#mail_plugins = $mail_plugins\n auth_socket_path = \/var\/run\/dovecot\/auth-master/' /etc/dovecot/conf.d/15-lda.conf # sed -i -e 's/#mail_plugins = $mail_plugins/mail_plugins = $mail_plugins sieve/' /etc/dovecot/conf.d/15-lda.conf # cp /etc/dovecot/conf.d/20-imap.conf /etc/dovecot/conf.d/20-imap.conf.orig # sed -i -e 's/#mail_plugins = $mail_plugins/mail_plugins = $mail_plugins quota imap_quota/' /etc/dovecot/conf.d/20-imap.conf # cp /etc/dovecot/conf.d/20-pop3.conf /etc/dovecot/conf.d/20-pop3.conf.orig # sed -i -e 's/#mail_plugins = $mail_plugins/mail_plugins = $mail_plugins quota/' /etc/dovecot/conf.d/20-pop3.conf # cp /etc/dovecot/conf.d/90-quota.conf /etc/dovecot/conf.d/90-quota.conf.orig # sed -i -e 's/#quota = maildir/quota = maildir/' /etc/dovecot/conf.d/90-quota.conf # sed -i -e 's/#quota_rule =/quota_rule =/' /etc/dovecot/conf.d/90-quota.conf # sed -i -e 's/#quota_rule2 =/quota_rule2 =/' /etc/dovecot/conf.d/90-quota.conf # sed -i -e 's/#quota_warning/quota_warning/' /etc/dovecot/conf.d/90-quota.conf
# vim /etc/dovecot/conf.d/90-quota.conf
Descomente
service quota-warning { executable = script /usr/local/bin/quota-warning.sh user = dovecot unix_listener quota-warning { user = vmail } }
# vim /usr/local/bin/quota-warning.sh
#!/bin/sh PERCENT=$1 USER=$2 cat << EOF | /usr/lib/dovecot/deliver -d $USER -o "plugin/quota=maildir:User quota:noenforcing" From: postmaster@mail.dominiorev.com.br Subject: Quota Aviso AVISO Usando $PERCENT% do tamanho da caixa postal. Remontti (55) 9999-9999 EOF
# chmod +x /usr/local/bin/quota-warning.sh # /etc/init.d/dovecot restart # /etc/init.d/postfix restart
Comando para ver cota
# doveadm quota get -u usuario@dominio.com.br
WEBMAIL ROUNDCUBE
# apt install php5-intl php-pear # sed -i -e "s/^;date\.timezone =.*$/date\.timezone = 'America\/Sao_Paulo'/" /etc/php5/apache2/php.ini # /etc/init.d/apache2 restart # cd /var/www/html
Acesse e baixe a versao mais recente
https://roundcube.net/download/
Hoje 1.2.4 - Complete
# wget --no-check-certificate https://github.com/roundcube/roundcubemail/releases/download/1.2.4/roundcubemail-1.2.4-complete.tar.gz # tar -vxzf roundcubemail* # mv roundcubemail-1.2.4 webmail # chown www-data. -R webmail
Criaremos nosso banco de dados para o roundcubemail.
# mysql -u root -p
Será solicitado a senha root do mysql, entre com a senha.
CREATE DATABASE roundcubemail; GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcube@localhost IDENTIFIED BY 'SUA-SENHA-BD-ROUND'; FLUSH PRIVILEGES; quit;
Acesse:
http://SEU-DOMINIO/webmail/installer/
Clique em Next
Principais itens a ser alterado ou de seu gosto o que não citei deixei padrão
== General configuration ==
product_name: Nome do Webmail
Check client IP in session authorization: MARQUE
== Logging & Debugging ==
log_driver: syslog
== Database setup ==
Database type: MYSQL
Database server: localhost
Database name: roundcubemail
Database user name: roundcube
Database password: SUA-SENHA-BD-ROUND
db_prefix:
== IMAP Settings ==
username_domain: mail.dominiorev.com.br
== SMTP Settings ==
smtp_server: tls://mail.dominiorev.com.br
smtp_port: 25
== Display settings & user prefs ==
language *: pt_BR
If preview pane is enabled: Marque
Compose HTML formatted messages: always
== Plugins ==
"De acordo com suas necessidades! Porém vou configurar os seguintes.
- emoticons
- managesieve
- markasjunk
- newmail_notifier
- password
- zipdownload
Agora clique em [CREAT CONFIG]
Vai retornar uma mensagem:
The config file was saved successfully into RCMAIL_CONFIG_DIR directory of your Roundcube installation.
Isso significa que nosso arquivo de configuração do roundcube foi criado (config/config.inc.php)
Agora clique em: [CONTINUE]
Agora em: [Inicialize database]
Irá retornar:
Check DB config
DSN (write): OK
DB Schema: OK
DB Write: OK
DB Time: OK
Se você já criou uma conta de email você pode testa-la [Check login]
Como recomendações, mova o diretório installer para outro nome ou remova.
After completing the installation and the final tests please remove the whole installer folder from the document root of the webserver or make sure that enable_installer option in config.inc.php is disabled.
Depois de completar a instalação e os testes finais remova toda a pasta de instalação da raiz de documentos do servidor web ou certifique-se de que enable_installer opção no config.inc.php está desativado.
# mv installer/ installer_XYZ_12345
Acesse o diretório dos plugins do roundcube.
# cd /var/www/html/webmail/plugins/
== newmail_notifier ==
# cd newmail_notifier # cp config.inc.php.dist config.inc.php # sed -i -e 's/= false/= true/' config.inc.php
== zipdownload ==
# cd ../zipdownload # cp config.inc.php.dist config.inc.php # sed -i -e 's/= false/= true/' config.inc.php
== markasjunk ==
(Sem configuração)
= managesieve =
Faz emails identificado com spam cair na pasta spam.
# cd ../managesieve # cp config.inc.php.dist config.inc.php # vim config.inc.php
Altere: (atençao para o caminho)
$config['managesieve_default'] = '/var/www/html/webmail/plugins/managesieve/default.sieve'; $config['managesieve_script_name'] = 'Filtros';
Crie o arquivo default.sieve
# vim /var/www/html/webmail/plugins/managesieve/default.sieve
require ["fileinto"]; # rule:[Spam] if header :contains "X-Spam-Flag" "YES" { fileinto "Junk"; stop; }
== password ==
Permite usuário alterar sua senha.
# cd ../password # cp config.inc.php.dist config.inc.php # vim config.inc.php
Altere:
//Define o uma quantidade minima de caracteres $config['password_minimum_length'] = 8; $config['password_require_nonalpha'] = false; $config['password_db_dsn'] = 'mysql://postfix:SENHA-POSTFIX-MYSQL@localhost/postfix'; $config['password_query'] = "UPDATE mailbox SET password=MD5(%p) WHERE username=%u AND password=MD5(%o)";
Plugins extra (http://plugins.roundcube.net/)
# cd /var/www/html/webmail/plugins/
== contextmenu ==
Cria menus ao clicar com o direito. (# apt install git)
# git clone --recursive https://github.com/JohnDoh/Roundcube-Plugin-Context-Menu.git # mv Roundcube-Plugin-Context-Menu contextmenu
== persistent_login ==
Permite deixar salvo a sessão.
# git clone --recursive https://github.com/mfreiholz/Roundcube-Persistent-Login-Plugin.git # mv Roundcube-Persistent-Login-Plugin persistent_login # cd persistent_login/ # cp config.inc.php.dist config.inc.php # sed -i -e 's/= false/= true/' config.inc.php
Precisa fazer umas alterações em nossas tabelas do bd roundcubemail, para isso use:
# mysql -u roundcube -pSENHA-USER-MYSQL-ROUNDCUBE roundcubemail < sql/mysql.sql
A tradução ao meu ver ficou estranha, e vamos adicionar um aviso.
# vim localization/pt_BR.inc
Altere para:
<?php $labels['ifpl_rememberme'] = 'Salvar login'; $labels['ifpl_rememberme_hint'] = 'Não salve seu login em computadores públicos por razões de segurança.'; ?>
== dovecot_ident ==
Como webmail é um acesso localhost, nos logs de acesso IMAP não queremos isso e sim o IP do usuário que esta acessando, para isso:
# cd /var/www/html/webmail/plugins # git clone --recursive https://github.com/corbosman/dovecot_ident.git # vim /etc/dovecot/dovecot.conf
Decomente incluindo o valor (127.0.0.1 ::1)
login_trusted_networks = 127.0.0.1 ::1 IP-DO-SEU-SERVIDOR
ex:
login_trusted_networks = 127.0.0.1 ::1 250.250.0.6 2000:fff:250:250:0::6
# /etc/init.d/dovecot restart # /etc/init.d/postfix restart
Agora precisamos adicionar nossos plugins extrar nas configurações do Round.
# vim /var/www/html/webmail/config/config.inc.php
Procure por:
$config['plugins'] Inclua os plugins contextmenu, persistent_login e dovecot_ident ficando: $config['plugins'] = array('emoticons', 'managesieve', 'markasjunk', 'newmail_notifier', 'password', 'zipdownload','contextmenu', 'persistent_login', 'dovecot_ident'); //Eu particularmente gosto de fazer ainda algumas mudanças, se desejar inclua ao final do arquivo: $config['show_images'] = 2; $config['prefer_html'] = true; $config['check_all_folders'] = true; $config['message_show_email'] = true; $config['draft_autosave'] = 180; $config['quota_zero_as_unlimited'] = true; $config['list_cols'] = array('flag', 'status', 'fromto', 'subject', 'date', 'size', 'attachment', 'priority'); //Se desejar cadastrar um domino qual não precisa informar o @dominio... $config['username_domain'] = 'dominiorev.com.br';
# chown www-data. -R /var/www/html/webmail/
Seu servidor de e-mail já está funcionado, logue em seu webmail, envie algum e-mails.
Acesse: http://SEU-DOMINIO/webmail/
PEGANDO A ULTIMA VEZ QUE USUÁRIO LOGOU E O IP
Se você é administrador de um servidor de e-mail certamente vai querer isso!
Primeiramente vamos adicionar alguns campos extrar nassa tabela mailbox (last_login_date last_login_ip last_login_proto)
# mysql -u root -p
use postfix; ALTER TABLE `mailbox` ADD `last_login_date` DATETIME NULL COMMENT 'last login date',ADD `last_login_ip` VARCHAR( 39 ) NULL COMMENT 'last login ip',ADD `last_login_proto` CHAR( 5 ) NULL ; quit;
Vamos ensinar o dovecot a alimentar esses campos.
10-master.conf
# sed -i -e 's/service imap {/service imap {\n executable = imap imap-postlogin/' /etc/dovecot/conf.d/10-master.conf # sed -i -e 's/service imap {/service imap {\n # Post-login action/' /etc/dovecot/conf.d/10-master.conf # sed -i -e 's/service pop3 {/service pop3 {\n executable = pop3 pop3-postlogin/' /etc/dovecot/conf.d/10-master.conf # sed -i -e 's/service pop3 {/service pop3 {\n # Post-login action/' /etc/dovecot/conf.d/10-master.conf # echo ''>> /etc/dovecot/conf.d/10-master.conf # echo '# Post login scripting POP3'>> /etc/dovecot/conf.d/10-master.conf # echo 'service pop3-postlogin {'>> /etc/dovecot/conf.d/10-master.conf # echo ' executable = script-login /usr/local/bin/postlogin-pop.sh'>> /etc/dovecot/conf.d/10-master.conf # echo ' user = $default_internal_user'>> /etc/dovecot/conf.d/10-master.conf # echo ' unix_listener pop3-postlogin {'>> /etc/dovecot/conf.d/10-master.conf # echo ' }'>> /etc/dovecot/conf.d/10-master.conf # echo '}'>> /etc/dovecot/conf.d/10-master.conf # echo ''>> /etc/dovecot/conf.d/10-master.conf # echo '# Post login scripting IMAP'>> /etc/dovecot/conf.d/10-master.conf # echo 'service imap-postlogin {'>> /etc/dovecot/conf.d/10-master.conf # echo ' executable = script-login /usr/local/bin/postlogin-imap.sh'>> /etc/dovecot/conf.d/10-master.conf # echo ' user = $default_internal_user'>> /etc/dovecot/conf.d/10-master.conf # echo ' unix_listener imap-postlogin {'>> /etc/dovecot/conf.d/10-master.conf # echo ' }'>> /etc/dovecot/conf.d/10-master.conf # echo '}'>> /etc/dovecot/conf.d/10-master.conf
Crie o arquivo postlogin-imap.sh
# vim /usr/local/bin/postlogin-imap.sh
Atenção para SENHA.
#!/bin/sh MYSQL_USER='postfix' PASSWD='SENHA' DB_NAME='postfix' if [ X"${USER}" != X"dump-capability" ]; then mysql -u${MYSQL_USER} -p${PASSWD} ${DB_NAME} >/dev/null 2>&1 <<EOF UPDATE mailbox SET \ last_login_ip="$IP", \ last_login_date=NOW(), \ last_login_proto="IMAP" \ WHERE username='$USER'; EOF fi exec "$@"
Crie o arquivo postlogin-pop.sh
# vim /usr/local/bin/postlogin-pop.sh
Atenção para SENHA.
#!/bin/sh MYSQL_USER='postfix' PASSWD='SENHA' DB_NAME='postfix' if [ X"${USER}" != X"dump-capability" ]; then mysql -u${MYSQL_USER} -p${PASSWD} ${DB_NAME} >/dev/null 2>&1 <<EOF UPDATE mailbox SET \ last_login_ip="$IP", \ last_login_date=NOW(), \ last_login_proto="POP3" \ WHERE username='$USER'; EOF fi exec "$@"
# chmod +x /usr/local/bin/postlogin-* # /etc/init.d/dovecot restart
Acesse sua conta de email e apois consulte a tabela mailbox (SELECT * FROM `mailbox`)
Até este ponto nosso servidor está 100%, agora falta apenas um Anti-Spam e um Anti-Vírus para ficar perfeito, Então vamos nessa 🙂
SPAMASSASSIN
Vamos começar pelo SpamAssassin
# apt install spamc spamassassin
Alguns ajustes
# sed -i -e 's/ENABLED=0/ENABLED=1/' /etc/default/spamassassin # sed -i -e 's/CRON=0/CRON=1/' /etc/default/spamassassin # sed -i -e 's/# report_safe 1/report_safe 0/' /etc/spamassassin/local.cf ????# sed -i -e 's/inbox = yes/inbox = yes\n } /' /etc/dovecot/conf.d/10-mail.conf # systemctl enable spamassassin
# vim /etc/postfix/master.cf
Adicione ==> -o content_filter=spamassassin
smtp inet n - - - - smtpd -o content_filter=spamassassin {..} submission inet n - - - - smtpd -o content_filter=spamassassin {..} smtps inet n - - - - smtpd -o content_filter=spamassassin {..}
E no final do arquivo:
# SpamAssassin spamassassin unix - n n - - pipe user=debian-spamd argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}
Vamos instalar o Razor Pyzor para ajudar no bloquei dos Spam.
# apt install razor pyzor
# vim /etc/spamassassin/local.cf
Inclua antes da ultima linha (endif # Mail::SpamAssassin::Plugin::Shortcircuit)
# razor2 use_razor2 1 score RAZOR2_CHECK 2.500 # pyzor use_pyzor 1 score PYZOR_CHECK 2.500
# su - debian-spamd -c 'razor-admin -d --create' # su - debian-spamd -c 'razor-admin -register' # su - debian-spamd -c 'razor-admin -discover' # su - debian-spamd -c 'pyzor discover'
ANTIVIRUS AMAVIS / CLAMAV
Você precisa ter nos repositórios os pacotes non-free
# vim /etc/apt/sources.list
(exemplo)
deb http://ftp.br.debian.org/debian/ jessie main contrib non-free
# apt update # apt install amavisd-new clamav clamav-freshclam clamav-daemon arj bzip2 cabextract nomarch pax rar unrar unzip zip zoo lhasa libmail-dkim-perl libnet-ldap-perl libsnmp-perl libzeromq-perl lzop p7zip rpm # adduser clamav amavis # /etc/init.d/clamav-freshclam stop # freshclam # su - amavis -c 'razor-admin -d --create' # su - amavis -c 'razor-admin -register' # su - amavis -c 'razor-admin -discover' # su - amavis -c 'pyzor discover'
# vim /etc/amavis/conf.d/15-content_filter_mode
#(Descomente)
@bypass_virus_checks_maps = ( \%bypass_virus_checks, \@bypass_virus_checks_acl, $bypass_virus_checks_re); @bypass_spam_checks_maps = ( \%bypass_spam_checks, \@bypass_spam_checks_acl, $bypass_spam_checks_re);
# vim /etc/amavis/conf.d/50-user
Adicionar !! Atenção para SENHA
# @lookup_sql_dsn = ( ['DBI:mysql:database=postfix;host=127.0.0.1;port=3306', 'postfix', 'SENHA-BD-POSTFIX']); $sql_select_policy = 'SELECT "Y" as local FROM alias WHERE address IN (%k)'; #------------ Do not modify anything below this line ------------- 1; # ensure a defined return
# vim /etc/amavis/conf.d/05-node_id
Altere:
$myhostname = "mail.dominiorev.com.br";
# vim /etc/amavis/conf.d/01-debian
Comente:
#$unarj = ['arj', 'unarj'];
Descomente:
$unrar = ['rar', 'unrar']; #disabled (non-free, no security support)
Personalização Amavis
# vim /etc/amavis/conf.d/20-debian_defaults
Eu comento sa_spam_subject_tag, assim as mensagens que forem spam não terão o assunto trocado, pois elas já irão cair na caixa de spam.
#$sa_spam_subject_tag = '***SPAM*** ';
Comente se não desejar receber as menssagens de erro.
#$final_virus_destiny = D_DISCARD; # (data not lost, see virus quarantine) #$final_banned_destiny = D_BOUNCE; # D_REJECT when front-end MTA #$final_spam_destiny = D_BOUNCE; $final_bad_header_destiny = D_PASS; # False-positive prone (for spam)
Não comente final_bad_header_destiny (se não os spam não serão entregues)
Se não quiser que seu email postmaster receba um email com todos os emails q ele discartou, comente:
#$virus_admin = "postmaster\@$mydomain"; # due to D_DISCARD default
Habilitar o amavis no postfix
# postconf -e "content_filter = smtp-amavis:[127.0.0.1]:10024"
# vim /etc/postfix/master.cf
Adicionar ao final
smtp-amavis unix - - - - 2 smtp -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes -o disable_dns_lookups=yes -o max_use=20 -o smtp_generic_maps= 127.0.0.1:10025 inet n - - - - smtpd -o mynetworks=127.0.0.0/8 -o content_filter= -o local_recipient_maps= -o local_header_rewrite_clients= -o relay_recipient_maps= -o smtpd_restriction_classes= -o smtpd_delay_reject=no -o smtpd_client_restrictions=permit_mynetworks,reject -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o smtpd_data_restrictions=reject_unauth_pipelining -o smtpd_end_of_data_restrictions= -o smtpd_error_sleep_time=0 -o smtpd_soft_error_limit=1001 -o smtpd_hard_error_limit=1000 -o smtpd_client_connection_count_limit=0 -o smtpd_client_connection_rate_limit=0 -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks -o strict_rfc821_envelopes=yes
Restarte todos os serviços
# /etc/init.d/clamav-daemon restart # /etc/init.d/clamav-freshclam restart # /etc/init.d/spamassassin restart # /etc/init.d/amavis restart # /etc/init.d/dovecot restart # /etc/init.d/postfix restart
Gostou? Ficou com alguma dúvida?
Deixe seu comentário!
Abraço!
Ótimo manual Rudimar, fiz tudo como no exemplo ai está tudo ok aparentemente, mando e-mail do webmail e chega no destino normal demora um pouco mais vai, só que não estou recebendo e-mail, se tem alguma ideá do que pode ser ? envio mais não recebo.
Irmão se pode faça um video e todo maerial actualizados
Sem tempo hehe. Mas vou montar um novo tutorial para servidor de e-mail em cima do debian 10.
Parabéns pelo tutorial bem completo e detalhado.
Queria pedir, atualiza ele pelo amor de Deus, e por favor coloca ele vinculado ao AD.
Desde já muito obrigado, e parabéns.
Tempo, veja se o https://vestacp.com/ nao resolve seu problema
Parabéns pelo tutorial. Muito bom. Tentei implementar no Ubuntu 18.04 e fiz até o final. Mas quando tento usar o postfix aparece este erro:
Sep 8 12:23:50 srv1 postfix/smtpd[13857]: warning: SASL: Connect to private/auth failed: Connection refused
Sep 8 12:23:50 srv1 postfix/smtpd[13857]: fatal: no SASL authentication mechanisms
Sep 8 12:23:51 srv1 postfix/master[13811]: warning: process /usr/lib/postfix/sbin/smtpd pid 13856 exit status 1
Sep 8 12:23:51 srv1 postfix/master[13811]: warning: /usr/lib/postfix/sbin/smtpd: bad command startup — throttling
Sep 8 12:23:51 srv1 postfix/master[13811]: warning: process /usr/lib/postfix/sbin/smtpd pid 13857 exit status 1
Alguma idéia do que pode ser?
Saída do comando dovecont -n
root@srv1:/run/dovecot# dovecot -n
# 2.2.33.2 (d6601f4ec): /etc/dovecot/dovecot.conf
# Pigeonhole version 0.4.21 (92477967)
doveconf: Fatal: Error in configuration file /etc/dovecot/conf.d/10-mail.conf line 64: Unknown setting: mailbox { mailbox
doveconf: Error: managesieve-login: dump-capability process returned 89
doveconf: Fatal: Error in configuration file /etc/dovecot/conf.d/10-mail.conf line 64: Unknown setting: mailbox { mailbox
Olá Rudimar!
Parabéns pelo tutorial! Também segui o passo-a-passo sem enfrentar erros aqui em meu ambiente! Porem, quando acesso o WEBMAIL pelo ROUNDCUBE ele abre a interface direitinho, porem, quando insiro o usuário e senha (uma conta que criei no postfix.admin) na tela do roundcube retorna “falha de login”. Estou a dias tentando desvendar isso, sem sucesso! Poderia me dar alguma dica ou onde me focar, por favor!
Aqui ta dando erro nessa parte
mailbox Trash
{
auto = subscribe
special_use = Trash
}
mailbox Drafts {
auto = subscribe
special_use = Drafts
}
mailbox Sent {
auto = subscribe
special_use = Sent
}
mailbox Junk {
auto = subscribe
special_use = Junk
}
quando do o comando /etc/init.d/dovecot restart ele retorna como erro fatal line 66 kkkkkk já fiz d e tudo da line 66: Expecting ‘{‘ sou leigo me desculpa, pesquisei aqui mas não consegui
Acredito q o tutorial esteja desatualizado, pois deve ter saído versões mais novas, e não tive tempo de refaze-lo.
Boa noite. Na linha acima tem } a mais so remover ele que para o erro fica a dica ai.
no 10-mail.conf
Acredito q o tutorial esteja desatualizado, pois deve ter saído versões mais novas, e não tive tempo de refaze-lo.
Bom dia, tambem tentei seguir o tutorial, mas sem um sucesso.
Mesmo já esta desatualizado, deve ter vários pacotes novos que as configurações devem estar um pouco diferente, é necessário que vc interprete o saiba o que esta fazendo para conseguir adaptar para uma realidade mais atual. (estou tentando achar tempo para refazer o tuto em cima do deb9)
Acredito q o tutorial esteja desatualizado, pois deve ter saído versões mais novas, e não tive tempo de refaze-lo.
Algum outro tutorial teria outro com algo do tipo ao invés de usar o Mysql utilizar o LDAP para integrar com os usuários do AD, eu até fiz e consegui para usuários do AD porém não consigo enviar para os grupos do AD.
Boa tarde e parabéns está Ótimo o conteúdo publicado.
Rudimar, tudo bem? segui todos os passos, sem erros, porém ao acessar o admin para criar um domínio e adicionar uma conta de email, simplesmente diz que foi criado com sucesso mas na listagem na tela não exibe os dados. A tabela no mysql está sendo populada.
Boa noite Amigo,
Estou com a necessidade em um cliente onde o mesmo deseja bloquear o acesso das contas por horário.
Sabe alguma forma de fazer isto?
Postfix é bem flexível, você poderia criar algum campo extra na tabla e coloca horário per metido, e ai tentar fazer login ele verificar essa informação. Nunca fiz, mas acredito que de para fazer sim.
estou procurando alguma regra que funcione para restringir determinados usuário para enviar somente para certos emails ou domínios, porem tinha que ser no MySQL, uma tabla com os usuários e outra com o domínios ou e-mail que esses usuários poderiam enviar, testei essa ai embaixo mas não tive exito. sera que é possível implementar isso no postfix. aguardo
Obrigado e mais uma vês Ótimo post.
smtpd_recipient_restrictions=
mysql:/etc/postfix/protected_users.cf
smtpd_restriction_classes = whitelist
whitelist = check_sender_access mysql:/etc/postfix/whitelist.cf, reject
CREATE TABLE `protected_users` (
`recipient` VARCHAR( 50 ) NOT NULL ,
`class` VARCHAR( 10 ) NOT NULL,
UNIQUE ( `recipient` )
);
CREATE TABLE `whitelist` (
`sender` VARCHAR( 50 ) NOT NULL ,
`action` VARCHAR( 2 ) NOT NULL ,
UNIQUE ( `sender` )
);
Nunca tentei fazer isso, teria te fazer uns testes mas estou bem sem tempo.
Vou por aqui na minha agenda, quando tiver um tempo vou dar uma pesquisada.
Desculpe não poder ajudar no momento.
Estava há algumas semanas pesquisando sobre este assunto e nunca pensei encontrar um material tão bom em português! Muito melhor do que todos tutorais em inglês que havia encontrado até agora! Por favor, poderia dar dicas de como usar um certificado do Let’s Encrypt nesse procedimento? Minha dúvida é se o certificado precisa ser do domínio principal (dominio.com.br) ou do mail.dominio.com.br. Muito obrigado!
Seu comentario caiu nos spam acabei vendo somente hoje, configura para mail.dominio.com.br que provavelmente é para quem vc apontou nas configurações.
Estava há algumas semanas pesquisando sobre este assunto e nunca pensei encontrar um material tão bom em português! Muito melhor do que todos tutorais em inglês que havia encontrado até agora! Por favor, poderia dar dicas de como usar um certificado do Let’s Encrypt nesse procedimento? Minha dúvida é se o certificado precisa ser do domínio principal (dominio.com.br) ou preciso criar outro certificado para o domínio mail.dominio.com.br. Muito obrigado!
Estava há algumas semanas pesquisando sobre este assunto e nunca pensei encontrar um material tão bom em português! Muito melhor do que todos tutorais em inglês que havia encontrado até agora! Por favor, poderia dar dicas de como usar um certificado do Let’s Encrypt nesse procedimento? Minha dúvida é se o certificado precisa ser do domínio principal (dominio.com.br) ou do mail.dominio.com.br. Muito obrigado!
Você pode criar ele para o domínio e seus subdomínios… Vai depender do que vc vai querer fazer…
Parabéns mesmo, excelente! Já configurei um servidor com outro tutorial mas o seu está bem mais claro e completo. Agora a pergunta que parece com a primeira dos comentários. A amazon não permite o autoritativo nos seus ips, por isso não consigo que funcione o reverso, aí usando o dns da registro br sem reverso não vai funcionar né?
Usa o reverso deles.
Rudimar primeiro gostaria de parabenizar pelo tutorial achei muito bom, porém, estou com uma dúvida, é possível fazer todo este procedimento sem configurar DNS Autoritativo e Reverso sobre seus IPS, conforme o tutorial que você também disponibilizou, configurando somente o autoritativo do Registro.br?
Se entendi você quer apenas autoritativo e não recursivo, isso?
Poxa vida Amigo, muito obrigado pelo excelente tutorial.
Excelente tutorial! Para uma melhor segurança nas entregas dos email não seria necessário a instalação de uma solução como opendkim? (Obs.: sou leigo no assunto, e andei lendo algumas coisas sobre mail service).
Adilson
Sim pode, mas como já acho bem complexo de passar esse tutorial preferi deixar de fora, se não tem gente q vai ter um nó no cérebro! Heheh
Excelente tutorial , me ajudou muito estou pensando em usar como base pra minha solução de e-mail, com a diferença que quero usar RainLoop como webmail.
Voce ja conseguiu implementar fail2ban com dovecot?
Uso com o modulo do postfix. Funciona bem…
Ótimo tutorial, vc tem alguma documentação de como implementar Vacation ou Autoresponder? Obrigado
Você pode criar um filtro para responder todas as mensagens.