You are on page 1of 57

Home


Consultoria

Home
Linux
FreeBSD
OUTROS  19
Mikrotik
Consultoria

Montando um servidor de E-mail


Completo com
Post x+Dovecot+Post xAdmin+Spa
mAssassin+SPF+RoundCubeMail+IPv
4/IPv6
POR RUDIMAR REMONTTI · PUBLISHED 30 DE JANEIRO DE 2017 · UPDATED 4 DE JULHO DE 2017

Neste tutorial vou ensinar como con gurar um servidor de e-mail com domínios
virtuais com integração dos usuários/domínios no banco de dados MySQL.
– Post x para nosso MTA.
– Dovecot como servidor Imap e Pop.
– Post xadmin 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á cou bem longo. E desculpe
pelos erros de portuga, mas vou fazendo na corrida.

CENÁRIOS
IP: 250.250.0.6 / 2000: f:250:250:0::6
Reverso sobre os IPS 250.250.0.6 / 2000: f:250:250:0::6: mail.dominiorev.com.br
Domínios virtuais: remontti.com.br / dominiorev.com.br / você pode ter diversos

REQUISITOS
1 – Ter con gurado 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

1 127.0.0.1 localhost
2 250.250.250.6 mail.dominiorev.com.br mail
3 {...}

# vim /etc/hostname

1 mail
Con gure 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

1 auto eth0
2 iface eth0 inet static
3 address 250.250.0.6
4 netmask 255.255.255.240
5 network 250.250.0.0
6 broadcast 250.250.0.15
7 gateway 250.250.0.1
8 # dns-* options are implemented by the resolvconf package, if install
9 dns-nameservers 250.250.0.2
10 dns-search ns1.dominiorev.com.br
11
12 #v6
13 iface eth0 inet6 static
14 pre-up modprobe ipv6
15 address 2000:fff:250:250:0::6
16 netmask 64
17 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: f:250:250:0::1 ) assim toda vez que o sistema inicializar sua rota default
(gateway) IPv6 é con gurada é con gurado.

POSTFIX / DOVECOTE
O Post x é 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)
– Veri cação a listas RBL
– Extenso suporte a ltros
– Suporte a expressão-regular
– Veri cação de cabeçalho
– Veri caçã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 con guraçã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 ltros 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

Responda:
Site da Internet

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

Veri que o arquivo /etc/mailname e serti que-se que seja seu domínio.

# vim /etc/mailname

1 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

1 root: postmaster@dominiorev.com.br
# newaliases

POSTFIXADMIN
Instalaremos nosso Post xAdmin 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 'SENHA';"

Será solicitado a senha do usuários root do mysql.

Vamos baixar o Post xAdmin, hoje (Jan 2017) o projeto está em sua versão 3.0
https://sourceforge.net/projects/post xadmin/. 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/d
ownload?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 con g.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.

1 $CONF['configured'] = true;
2 $CONF['default_language'] = 'pt-br';
3
4 $CONF['database_type'] = 'mysql';
5 $CONF['database_host'] = 'localhost';
6 $CONF['database_user'] = 'postfix';
7 $CONF['database_password'] = 'SENHA';
8 $CONF['database_name'] = 'postfix';
9
10 # Defina o tipo de criptografia para as senhas salvas no BD.
11 $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/post xadmin/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 nal temos: Change setup password
Preencha os campos Setup password com uma senha e repita (Essa senha será
necessária pra criar administradores do Post xAdmin) 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 con g.inc.php
or con g.local.php and set
$CONF[‘setup_password’] =
‘ca06e6cd4df066ac8e7999616a773b00:51508f16ca5ef631a5ed23ccc44160d934375

Esta senha criptografada, será necessários informar no arquivo con g.inc.php antes
de prosseguir. Então vamos a edição.

# vim config.inc.php

Localize:

1 $CONF['setup_password'] = 'changeme';

Altere para:

1 $CONF['setup_password'] = 'ca06e6cd4df066ac8e7999616a773b00:51508f16ca5ef631a
Salve se arquivo e volte para seu navegador. Em Create superadmin account vamos
criar nosso usuário administrador do Post xAdmin.

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 post xadmin


(/var/www/html/post xadmin) e renomear o arquivo setup.php
# mv setup.php QLQRNOME_setup.php

Acesse: http://SEU-DOMINO/post xadmin/

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/post x/main.cf

# cp /etc/postfix/main.cf /etc/postfix/main.cf.orig
# vim /etc/postfix/main.cf

Altere e adicione como descrito abaixo.


1 #--------ALTERE--------#
2 smtpd_banner = $myhostname
3 myorigin = $myhostname
4 mydestination = localhost
5
6 #--------COMENTE--------#
7 #relayhost =
8 #mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
9 #mailbox_size_limit = 0
10
11 #--------ADD AO FINAL--------#
12
13 # Authentification
14 smtpd_sasl_type=dovecot
15 smtpd_sasl_path=private/auth
16 smtpd_sasl_auth_enable = yes
17 smtpd_sasl_authenticated_header = yes
18 smtpd_sender_login_maps = proxy:mysql:/etc/postfix/mysql_sender_login_maps.c
19 broken_sasl_auth_clients = yes
20
21 # Virtual mailboxes
22 local_transport = virtual
23 virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf
24 virtual_mailbox_base = /var/vmail/
25 virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_map
26 virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.c
27 virtual_minimum_uid = 104
28 virtual_transport = virtual
29 #virtual_transport = dovecot ????????/ ql ?
30 virtual_uid_maps = static:5000
31 virtual_gid_maps = static:5000
32 dovecot_destination_recipient_limit = 1
33
34 ###### EXTRAS COMENTADO #######
35 # Tamanho maximo do anexo (21 MB)
36 # No webmail php deve permitir upar esse tamanho
37 message_size_limit = 22020096
38
39 # Um pouco mais de protecao contra spam
40 disable_vrfy_command = yes
41
42 # A RFC 821 basicamente exige que os enderecos sejam envelopados ou contidos
43 # Seguir esta regra faz com que se use essa notacao na sessao SMTP. Isso aju
44 strict_rfc821_envelopes = yes
45
46 # Caixa postal inexistente devolver aosender o erro 500,
47 # desta forma daqui alguns minutos voce nao precisara processar novamente o
48 unknown_local_recipient_reject_code = 500
49
50 # E rejeitar com erro 554 enderecos desconhecidos
51 unknown_address_reject_code = 554
52
53 # Tambem com o erro 554 podemos rejeitar as conexoes que venham de hostnames
54 unknown_hostname_reject_code = 554
55
56 # Os cliente desconhecidos tambem rejeitaremos com o mesmo erro
57 unknown_client_reject_code = 554
58
59 # Vamos definir que o servidores remotos podem fazer no maximo 10
60 # conexõsimultaneas (e um valor que trabalho, editem conforme a necessidade)
61 # Um spammer faz mais de 20
62 smtp_destination_recipient_limit = 10
63
64 # Vamos definir que a conexao so pode cometer 3 erros de codigos 500
65 # (erros definitivos), apos isto sera desconectado
66 smtpd_hard_error_limit = 3
67
68 # Para erros de codigo 400 (erros temporarios), podemos desconecta-los na pr
69 smtpd_soft_error_limit = 1
70
71 # Bom, claro que o spammer tambem pode ser desconectado e depois se reconect
72 # entao vamos nos prevenir destes espertinhos definindo quantas conexoes ele
73 smtpd_client_connection_count_limit = 10
74
75 # Nestas conexoes vamos limitar quantas mensagens ele pode mandar por minuto
76 # no meu caso uso 25. Se algum usuario seu reclamar deste limite,
77 # classifique-o como ninja ou na pior hipotese, um mail maniaco.
78 smtpd_client_message_rate_limit = 25
79
80 # Deixar um spammer maluco e faze-lo perder tempo. Dificilmente um servidor
81 # ao seu servidor vai cometer erros, os spammer cometem muitos erros, pois e
82 # Para irrita-los e quem sabe um dia desistirem de mim, eu travo eles dentro
83 # No meu caso, a cada erro eu os travo por 20 segundos. Ate que diminuiu o n
84 # devo estar na blacklist deles.rs
85 smtpd_error_sleep_time = 20
86
87 # Para este tipo de problema, os spammers podem resetar os erros deles.
88 # Para evitar que eles facam isto e sejam desconetados, podemos dizer se ele
89 # Como colher de cha, vamos deixar fazer isto apenas uma vez (ate porque ser
90 # Permitir a maquina remota dar o comando RSET apenas 1 vez.
91 smtpd_junk_command_limit = 1
92
93
94 # Defina tambem o numero maximo de destinatarios em uma unica mensagem.
95 # Utilize o numero que melhor lhe convir, entreviste pessoas chaves se neces
96 smtpd_recipient_limit = 50
97
98 # Os spammers nao se preocupam muito com isto,
99 # entao uma otima pratica para bloquear spams eh
100 # tornar a identificacao por HELO/EHLO obrigatoria.
101 smtpd_helo_required = yes
102
103 # Um pouco mais sobre o HELO/EHLO eh definir um tempo
104 # limite para o servidor fazer a identificacao, um
105 # servidor serio nao tem porque ficar enrolando.
106 # Vai diminuindo o tempo e observando os resultados.
107 # Vamos comecar com 60 segundos
108 smtp_helo_timeout = 60s
109
110 smtpd_helo_restrictions = permit_mynetworks,
111 permit_sasl_authenticated,
112 reject_invalid_helo_hostname,
113 reject_non_fqdn_helo_hostname,
114 reject_unknown_helo_hostname,
115 reject_unauth_pipelining
116
117 smtpd_sender_restrictions = reject_non_fqdn_sender,
118 reject_unknown_sender_domain,
119 reject_unlisted_sender,
120 reject_authenticated_sender_login_mismatch,
121 permit_sasl_authenticated,
122 permit_mynetworks
123
124 smtpd_recipient_restrictions = permit_sasl_authenticated,
125 permit_mynetworks,
126 reject_unauth_destination,
127 reject_unknown_reverse_client_hostname,
128 reject_invalid_hostname,
129 reject_non_fqdn_hostname,
130 reject_non_fqdn_sender,
131 reject_non_fqdn_recipient,
132 reject_unknown_sender_domain,
133 reject_unknown_recipient_domain,
134 reject_unauth_pipelining,
135 reject_rbl_client zen.spamhaus.org,
136 reject_rbl_client bl.spamcop.net,
137 reject_rbl_client dnsbl.sorbs.net,
138 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.post x.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 post x
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 veri que 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 nal:


# cp /etc/postfix/master.cf /etc/postfix/master.cf.orig
# vim /etc/postfix/master.cf

Adicione ao nal:

1 # Dovecot
2 dovecot unix - n n - - pipe
3 flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient}

Localize as seguintes linhas e descomente-as:

1 submission inet n - - - - smtpd


2 -o syslog_name=postfix/submission
3 -o smtpd_sasl_auth_enable=yes
4
5 smtps inet n - - - - smtpd
6 -o smtpd_tls_wrappermode=yes

Em altere os valores de smtpd_client_restrictions, os originais são diferentes. (veja na


imagem abaixo como ca)

1 -o smtpd_client_restrictions=permit_sasl_authenticated,reject
2 [...]
3 -o smtpd_client_restrictions=permit_sasl_authenticated,reject
Con gurando o Dovecot

Vou usar o comando sed para fazer as alterações necessárias em vez de carmos
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 nal 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 certi cados 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 cou 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

1 service auth {
2
3 #unix_listener auth-userdb {
4 #mode = 0666
5 #user =
6 #group =
7 #}
8
9 #descomente
10 unix_listener /var/spool/postfix/private/auth {
11 mode = 0666
12 }
13
14 #add
15 unix_listener auth-master {
16 mode = 0666
17 }
18
19 #Descomente
20 user = $default_internal_user
21 }

Vamos criar um ltro 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:

1 # Uncomment to enable managesieve protocol:


2 protocols = $protocols sieve
3
4 service managesieve-login {
5 }
6 service managesieve {
7 }
8 protocol sieve {
9 }

# 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

1 service quota-warning {
2 executable = script /usr/local/bin/quota-warning.sh
3 user = dovecot
4 unix_listener quota-warning {
5 user = vmail
6 }
7 }

# vim /usr/local/bin/quota-warning.sh

1 #!/bin/sh
2 PERCENT=$1
3 USER=$2
4 cat << EOF | /usr/lib/dovecot/deliver -d $USER -o "plugin/quota=maildir:User
5 From: postmaster@mail.dominiorev.com.br
6 Subject: Quota Aviso
7
8 AVISO
9 Usando $PERCENT% do tamanho da caixa postal.
10
11 Remontti
12 (55) 9999-9999
13 EOF

# chmod 777 /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/downloa
d/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.

1 CREATE DATABASE roundcubemail;


2 GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcube@localhost IDENTIFIED BY
3 FLUSH PRIVILEGES;
4 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 con guration ==
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_pre x:

== 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 con gurar os seguintes.
– emoticons
– managesieve
– markasjunk
– newmail_noti er
– password
– zipdownload

Agora clique em [CREAT CONFIG]


Vai retornar uma mensagem:
The con g le was saved successfully into RCMAIL_CONFIG_DIR directory of your
Roundcube installation.

Isso signi ca que nosso arquivo de con guração do roundcube foi criado
(con g/con g.inc.php)

Agora clique em: [CONTINUE]


Agora em: [Inicialize database]

Irá retornar:
Check DB con g
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 nal tests please remove the whole
installer folder from the document root of the webserver or make sure that
enable_installer option in con g.inc.php is disabled.

Depois de completar a instalação e os testes nais remova toda a pasta de instalação


da raiz de documentos do servidor web ou certi que-se de que enable_installer
opção no con g.inc.php está desativado.

# mv installer/ installer_XYZ_12345

Acesse o diretório dos plugins do roundcube.

# cd /var/www/html/webmail/plugins/

== newmail_noti er ==

# 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 con guração)

= managesieve =
Faz emails identi cado 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)

1 $config['managesieve_default'] = '/var/www/html/webmail/plugins/managesieve/d
2 $config['managesieve_script_name'] = 'Filtros';

Crie o arquivo default.sieve

# vim
/var/www/html/webmail/plugins/managesieve/default.sieve
1 require ["fileinto"];
2 # rule:[Spam]
3 if header :contains "X-Spam-Flag" "YES"
4 {
5 fileinto "Junk";
6 stop;
7 }

== password ==
Permite usuário alterar sua senha.

# cd ../password
# cp config.inc.php.dist config.inc.php
# vim config.inc.php

Altere:

1 //Define o uma quantidade minima de caracteres


2 $config['password_minimum_length'] = 8;
3
4 $config['password_require_nonalpha'] = false;
5
6 $config['password_db_dsn'] = 'mysql://postfix:SENHA-POSTFIX-MYSQL@localhost/p
7 $config['password_query'] = "UPDATE mailbox SET password=MD5(%p) WHERE user

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 cou estranha, e vamos adicionar um aviso.


# vim localization/pt_BR.inc

Altere para:

1 <?php
2 $labels['ifpl_rememberme'] = 'Salvar login';
3 $labels['ifpl_rememberme_hint'] = 'N&atilde;o salve seu login em computadores
4 ?>

== 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)

1 login_trusted_networks = 127.0.0.1 ::1 IP-DO-SEU-SERVIDOR

ex:

1 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 con gurações do Round.

# vim /var/www/html/webmail/config/config.inc.php

Procure por:

1 $config['plugins']
2 Inclua os plugins contextmenu, persistent_login e dovecot_ident ficando:
3 $config['plugins'] = array('emoticons', 'managesieve', 'markasjunk', 'newmail
4
5 //Eu particularmente gosto de fazer ainda algumas mudanças, se desejar inclua
6 $config['show_images'] = 2;
7 $config['prefer_html'] = true;
8 $config['check_all_folders'] = true;
9 $config['message_show_email'] = true;
10 $config['draft_autosave'] = 180;
11 $config['quota_zero_as_unlimited'] = true;
12 $config['list_cols'] = array('flag', 'status', 'fromto', 'subject', 'date', '
13 //Se desejar cadastrar um domino qual não precisa informar o @dominio...
14 $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

1 use postfix;
2 ALTER TABLE `mailbox` ADD `last_login_date` DATETIME NULL COMMENT 'last login
3 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.


1 #!/bin/sh
2 MYSQL_USER='postfix'
3 PASSWD='SENHA'
4 DB_NAME='postfix'
5 if [ X"${USER}" != X"dump-capability" ]; then
6 mysql -u${MYSQL_USER} -p${PASSWD} ${DB_NAME} >/dev/null 2>&1 <<EOF
7 UPDATE mailbox SET \
8 last_login_ip="$IP", \
9 last_login_date=NOW(), \
10 last_login_proto="IMAP" \
11 WHERE username='$USER';
12 EOF
13 fi
14 exec "$@"

Crie o arquivo postlogin-pop.sh

# vim /usr/local/bin/postlogin-pop.sh

Atenção para SENHA.

1 #!/bin/sh
2 MYSQL_USER='postfix'
3 PASSWD='SENHA'
4 DB_NAME='postfix'
5 if [ X"${USER}" != X"dump-capability" ]; then
6 mysql -u${MYSQL_USER} -p${PASSWD} ${DB_NAME} >/dev/null 2>&1 <<EOF
7 UPDATE mailbox SET \
8 last_login_ip="$IP", \
9 last_login_date=NOW(), \
10 last_login_proto="POP3" \
11 WHERE username='$USER';
12 EOF
13 fi
14 exec "$@"
# chmod 777 /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 car 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_ lter=spamassassin

1 smtp inet n - - - - smtpd


2 -o content_filter=spamassassin
3 {..}
4 submission inet n - - - - smtpd
5 -o content_filter=spamassassin
6 {..}
7 smtps inet n - - - - smtpd
8 -o content_filter=spamassassin
9 {..}

E no nal do arquivo:

1 # SpamAssassin
2 spamassassin unix - n n - - pipe
3 user=debian-spamd argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sen
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)

1 # razor2
2 use_razor2 1
3 score RAZOR2_CHECK 2.500
4
5 # pyzor
6 use_pyzor 1
7 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)

1 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)

1 @bypass_virus_checks_maps = (
2 \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re
3
4 @bypass_spam_checks_maps = (
5 \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);
# vim /etc/amavis/conf.d/50-user

Adicionar !! Atenção para SENHA

1 #
2 @lookup_sql_dsn = (
3 ['DBI:mysql:database=postfix;host=127.0.0.1;port=3306',
4 'postfix',
5 'SENHA-BD-POSTFIX']);
6 $sql_select_policy = 'SELECT "Y" as local FROM alias WHERE address IN (%k)';
7
8 #------------ Do not modify anything below this line -------------
9 1; # ensure a defined return

# vim /etc/amavis/conf.d/05-node_id

Altere:

1 $myhostname = "mail.dominiorev.com.br";

# vim /etc/amavis/conf.d/01-debian

Comente:

1 #$unarj = ['arj', 'unarj'];

Descomente:
1 $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.

1 #$sa_spam_subject_tag = '***SPAM*** ';

Comente se não desejar receber as menssagens de erro.

1 #$final_virus_destiny = D_DISCARD; # (data not lost, see virus quaranti


2 #$final_banned_destiny = D_BOUNCE; # D_REJECT when front-end MTA
3 #$final_spam_destiny = D_BOUNCE;
4 $final_bad_header_destiny = D_PASS; # False-positive prone (for spam)

Não comente nal_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:

1 #$virus_admin = "postmaster\@$mydomain"; # due to D_DISCARD default

Habilitar o amavis no post x


# postconf -e "content_filter = smtp-amavis:
[127.0.0.1]:10024"

# vim /etc/postfix/master.cf

Adicionar ao nal

1 smtp-amavis unix - - - - 2 smtp


2 -o smtp_data_done_timeout=1200
3 -o smtp_send_xforward_command=yes
4 -o disable_dns_lookups=yes
5 -o max_use=20
6 -o smtp_generic_maps=
7
8 127.0.0.1:10025 inet n - - - - smtpd
9 -o mynetworks=127.0.0.0/8
10 -o content_filter=
11 -o local_recipient_maps=
12 -o local_header_rewrite_clients=
13 -o relay_recipient_maps=
14 -o smtpd_restriction_classes=
15 -o smtpd_delay_reject=no
16 -o smtpd_client_restrictions=permit_mynetworks,reject
17 -o smtpd_helo_restrictions=
18 -o smtpd_sender_restrictions=
19 -o smtpd_recipient_restrictions=permit_mynetworks,reject
20 -o smtpd_data_restrictions=reject_unauth_pipelining
21 -o smtpd_end_of_data_restrictions=
22 -o smtpd_error_sleep_time=0
23 -o smtpd_soft_error_limit=1001
24 -o smtpd_hard_error_limit=1000
25 -o smtpd_client_connection_count_limit=0
26 -o smtpd_client_connection_rate_limit=0
27 -o receive_override_options=no_header_body_checks,no_unknown_recipient_chec
28 -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!

Tags: debian jessie Dovecot ipv4 ipv6 MySQL Post x Post xAdmin Quota Roudcube Webmail

RoundCubeMail SpamAssassin SPF

Rudimar Remontti
Trabalho atualmente como Gerente de Redes em um Provedor de Internet no Rio

Grande do Sul.

 VOCÊ PODE GOSTAR...


3 2  17

Post x: Fazendo Relay Quiosque para acesso a Servidor FreeRadius com


SMTP do Gmail/Google aplicações web com integração MySQL +
Apps Debian Autenticação PPPoE &
27 DE JULHO DE 2010 8 DE JANEIRO DE 2014
Hotspot VS Mikrotik +
Ubiquiti EAP/PSK
13 DE FEVEREIRO DE 2017

19 RESULTADOS

 Comentários 18  Pingbacks 1

Olivam  12 de novembro de 2017 às 1:16 AM


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 post x. aguardo

Obrigado e mais uma vês Ótimo post.

smtpd_recipient_restrictions=
mysql:/etc/post x/protected_users.cf

smtpd_restriction_classes = whitelist
whitelist = check_sender_access mysql:/etc/post x/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` )
);
Responder

Rudimar Remontti  1 de dezembro de 2017 às 11:00 AM



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.
Responder

Paruba  1 de novembro de 2017 às 2:04 PM


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 certi cado do Let’s
Encrypt nesse procedimento? Minha dúvida é se o certi cado precisa ser do domínio
principal (dominio.com.br) ou do mail.dominio.com.br. Muito obrigado!
Responder

Rudimar Remontti  24 de Fevereiro de 2018 às 3:33 PM



Seu comentario caiu nos spam acabei vendo somente hoje, con gura para
mail.dominio.com.br que provavelmente é para quem vc apontou nas con gurações.
Responder

Fabio  31 de outubro de 2017 às 11:30 AM


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 certi cado do Let’s
Encrypt nesse procedimento? Minha dúvida é se o certi cado precisa ser do domínio
principal (dominio.com.br) ou preciso criar outro certi cado para o domínio
mail.dominio.com.br. Muito obrigado!
Responder

Fabio  31 de outubro de 2017 às 10:19 AM


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 certi cado do Let’s
Encrypt nesse procedimento? Minha dúvida é se o certi cado precisa ser do domínio
principal (dominio.com.br) ou do mail.dominio.com.br. Muito obrigado!
Responder

Rudimar Remontti  6 de novembro de 2017 às 6:55 PM



Você pode criar ele para o domínio e seus subdomínios… Vai depender do que vc vai
querer fazer…
Responder

Gilvan Muniz  8 de outubro de 2017 às 10:54 AM


Parabéns mesmo, excelente! Já con gurei 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é?
Responder
Rudimar Remontti  18 de outubro de 2017 às 11:17 AM

Usa o reverso deles.
Responder

Luis Paulo de Almeida Batista  14 de setembro de 2017 às 1:50 AM


Rudimar primeiro gostaria de parabenizar pelo tutorial achei muito bom, porém, estou com
uma dúvida, é possível fazer todo este procedimento sem con gurar DNS Autoritativo e
Reverso sobre seus IPS, conforme o tutorial que você também disponibilizou, con gurando
somente o autoritativo do Registro.br?
Responder

Rudimar Remontti  14 de setembro de 2017 às 11:31 AM



Se entendi você quer apenas autoritativo e não recursivo, isso?
Responder

Fabio Silva  23 de agosto de 2017 às 3:43 PM


Poxa vida Amigo, muito obrigado pelo excelente tutorial.
Responder

Adilson  21 de julho de 2017 às 12:51 AM


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).
Responder

Rudimar Remontti  22 de julho de 2017 às 7:18 PM



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
Responder
Thiago Elias Martins  15 de Março de 2017 às 5:47 PM

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?
Responder

Rudimar Remontti  5 de Abril de 2017 às 2:23 PM



Uso com o modulo do post x. Funciona bem…

[post x]
enabled = true
port = smtp,ssmtp
lter = post x
logpath = /var/log/mail.log
maxretry = 10
Responder

olivam  8 de Fevereiro de 2017 às 10:50 AM


Ótimo tutorial, vc tem alguma documentação de como implementar Vacation ou
Autoresponder? Obrigado
Responder

Rudimar Remontti  13 de Fevereiro de 2017 às 2:26 PM



Você pode criar um ltro para responder todas as mensagens.

Responder

DEIXE UMA RESPOSTA

Comentário

Nome * E-mail *

Site

Não sou um robô


reCAPTCHA
Privacidade - Termos

Publicar comentário
Home
Consultoria

Remontti © 2016. Todos os direitos reservados.
   

You might also like