Servidor de Email · 6 min read · Dec 25, 2025

Um Servidor de Email Simples no Arch Linux (Postfix + Dovecot)

Um Servidor de Email Simples no Arch Linux (Postfix + Dovecot)

Autor: Jeffrey Gelens
Versão: 1.3
Data: 04-12-2009

Introdução

Este tutorial descreve como instalar um servidor de email completo usando Postfix e Dovecot em uma máquina Arch Linux ou VPS. Este tutorial específico é baseado na minha VPS de 256MB. Conhecimento básico de linux é necessário, pois não estou descrevendo cada passo em detalhes.

Sistema Base

A imagem base é Arch Linux 2008.06. Após a inicialização, é melhor desabilitar logins de root no seu servidor SSH e criar um novo usuário da seguinte forma:

adduser   
usermod -a -G wheel,users,nobody,mail 

É opcional classificar os espelhos do Arch Linux por velocidade, mas isso pode acelerar a instalação:

pacman -Sy  
pacman -S python  
sed -ie'' 's/^#S/S/g' /etc/pacman.d/mirrorlist  
rankmirrors -v /etc/pacman.d/mirrorlist | tee /etc/pacman.d/mirrorlist.new && mv /etc/pacman.d/mirrorlist.new /etc/pacman.d/mirrorlist

Instale os pacotes essenciais para esta configuração:

pacman -Syu  
pacman -S sudo base-devel abs

Servidores de Email

Agora que instalamos os pacotes básicos, o próximo passo é instalar os servidores de email. Como servidor SMTP, vamos instalar o Postgrey, que é uma das melhores ferramentas contra spam, então vamos instalar esses também. O greylisting é, no momento, uma maneira muito eficaz de bloquear spam sem escanear a mensagem em si, portanto, não está desperdiçando ciclos de CPU. No meu servidor, ele está bloqueando cerca de 95% de todo spam, os outros 5% são tratados pelo Spamassassin. A única desvantagem do greylisting é que os emails recebidos são atrasados por alguns minutos.

pacman -S postfix dovecot spamassassin procmail  
groupadd -g 5001 spamd  
useradd -u 5001 -g spamd -s /sbin/nologin -d /var/lib/spamassassin -m spamd  
chown spamd:spamd /var/lib/spamassassin

Spamassassin

Edite o –max-children conforme sua preferência. O Spamassassin usa muita memória, então para um servidor de email com apenas alguns usuários, 1 filho é suficiente.

/etc/conf.d/spamd

SAHOME="/var/lib/spamassassin/"
SPAMD_OPTS="-c --max-children 1 --username spamd -H ${SAHOME} -s ${SAHOME}spamd.log --pidfile /var/run/spamd.pid"

Certificados

Primeiro, precisamos gerar alguns certificados autoassinados para Dovecot e Postfix. Ele pedirá uma frase secreta, qualquer string aleatória está boa, você não precisa se lembrar dela.

cd /etc/ssl/certs  
openssl req -new -x509 -newkey rsa:1024 -days 3650 -keyout mail.key -out mail.crt  
openssl rsa -in mail.key -out mail.key  
mv mail.key /etc/ssl/private

Dovecot

Vamos configurar o Dovecot e o Postfix para usar a estrutura Maildir para armazenar emails. Isso armazena o email de cada usuário em seu diretório pessoal e não em um banco de dados. Isso é bom para esta configuração, mas para um maior número de usuários é melhor usar MySQL ou PostgreSQL para armazenamento. O Dovecot será configurado para que os usuários possam usar IMAP e IMAPs (SSL). Além disso, o Dovecot tem um servidor de autenticação SASL embutido, para que não precisemos configurar um servidor SASL separado, economizando assim memória.

/etc/dovecot/dovecot.conf

protocols = imap imaps
disable_plaintext_auth = yes
log_timestamp = "%b %d %H:%M:%S "
ssl = yes
ssl_cert_file = /etc/ssl/certs/mail.crt
ssl_key_file = /etc/ssl/private/mail.key
mail_location = maildir:~/Maildir
mail_access_groups = mail
auth_username_chars = abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@
protocol imap {
  imap_client_workarounds = delay-newmail tb-extra-mailbox-sep
}
auth default {
  mechanisms = plain login
  passdb pam {
  }
  userdb passwd {
  }
  user = root
  socket listen {
    client {
      path = /var/run/dovecot/auth-client
      user = postfix
      group = postfix
      mode = 0660
    }
  }
}

Postfix

O próximo é o Postfix, o arquivo de configuração é muito complexo. Sorte sua que eu fiz toda a pesquisa, para que você possa copiar e colar quase tudo. As seguintes configurações ainda precisam ser alteradas:

myhostname Esta é a localização dos seus servidores de email (por exemplo, mail.example.com). myorigin Este é o domínio após o @ nos endereços de email (por exemplo, jeffrey@ example.com). virtual_alias_domains O mesmo que myorigin.

/etc/postfix/main.cf

# Caminhos
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/lib/postfix
mail_owner = postfix
# Configurações de domínio
myhostname = mail.example.com
myorigin = example.com
mydestination = $myhostname, localhost.$mydomain, localhost
# Configurações de tempo limite e outros limites
delay_warning_time = 4h
unknown_local_recipient_reject_code = 450
minimal_backoff_time = 300s
maximal_backoff_time = 1200s
maximal_queue_lifetime = 1d
bounce_queue_lifetime = 1d
smtp_helo_timeout = 60s
smtpd_soft_error_limit = 3
smtpd_hard_error_limit = 12
# Configurações SMTP
smtpd_tls_cert_file=/etc/ssl/certs/mail.crt
smtpd_tls_key_file=/etc/ssl/private/mail.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_scache
smtp_tls_session_cache_database = btree:/var/lib/postfix/smtp_scache
smtpd_tls_loglevel = 1
smtpd_sasl_auth_enable = yes
#smtp_sasl_auth_enable = yes
smtpd_recipient_restrictions = permit_sasl_authenticated,
                               permit_mynetworks,
                               reject_unauth_destination,
                               check_policy_service inet:127.0.0.1:10030
smtpd_sender_restrictions = permit_sasl_authenticated, permit_mynetworks
smtpd_sasl_security_options = noanonymous
# SASL
smtpd_sasl_type = dovecot
smtpd_sasl_path = /var/run/dovecot/auth-client
# Configurações de rede
inet_interfaces = all
inet_protocols = ipv4
mynetworks = 127.0.0.0/8
relayhost =
# Configurações de email e caixa de correio
alias_maps = hash:/etc/postfix/aliases
alias_database = $alias_maps
home_mailbox = Maildir/
virtual_alias_domains = example.com
virtual_alias_maps = hash:/etc/postfix/virtual
mailbox_size_limit = 0
# Vários
mailbox_command = /usr/bin/procmail
smtpd_banner = $myhostname ESMTP
biff = no
append_dot_mydomain = no
debug_peer_level = 2
sendmail_path = /usr/sbin/sendmail
newaliases_path = /usr/bin/newaliases
mailq_path = /usr/bin/mailq
setgid_group = postdrop
html_directory = no
manpage_directory = /usr/man
sample_directory = /etc/postfix/sample
readme_directory = no
recipient_delimiter = +

Edite master.cf para que o Postfix filtre emails através do Postgrey (sobre o qual falaremos no próximo capítulo) e do Spamassassin.

/etc/postfix/master.cf

Substitua a seguinte linha:

smtp      inet  n       -       n       -       -       smtpd

com estas duas linhas:

smtp      inet  n       -       n       -       -       smtpd
  -o content_filter=spamassassin

E adicione as seguintes três linhas ao final do arquivo:

spamassassin unix -     n       n       -       -       pipe
  user=spamd argv=/usr/bin/perlbin/vendor/spamc -f -e
        /usr/sbin/sendmail -oi -f ${sender} ${recipient}

Defina as regras do Spamassassin. Você pode ter que ajustar um pouco o required_score. O padrão 6.31 parece ótimo para mim.

/etc/mail/spamassassin/local.cf

rewrite_header Subject ***SPAM***
required_score 6.31
report_safe 1
use_bayes 1
use_bayes_rules 1
bayes_auto_learn 1

/etc/procmailrc

O spam pode ser copiado automaticamente para a pasta Lixo criando este arquivo:

DROPPRIVS=yes
DEFAULT=$HOME/Maildir/
MAILDIR=$HOME/Maildir/

:0:
* ^X-Spam-Status: Yes
.Junk/

Criar contas de usuário

Para cada usuário de email, crie as contas apropriadas, crie seu próprio script se não quiser fazer tudo manualmente.

useradd -m -G mail -s /sbin/nologin   
cd ~  
umask 077  
mkdir -p Maildir/{cur,new,tmp}  
mkdir -p Maildir/.Drafts/{cur,new,tmp}  
mkdir -p Maildir/.Sent/{cur,new,tmp}  
mkdir -p Maildir/.Trash/{cur,new,tmp}  
chmod 0700 Maildir/{cur,new,tmp}  
chmod 0700 Maildir/.Drafts/{cur,new,tmp}  
chmod 0700 Maildir/.Sent/{cur,new,tmp}  
chmod 0700 Maildir/.Trash/{cur,new,tmp}  
chown -R :users *

Certifique-se de que os endereços de email dos novos usuários sejam adicionados ao mapa de usuários virtuais.

/etc/postfix/virtual

[email protected] jeffrey@localhost

Execute

postmap /etc/postfix/virtual

depois de salvar este arquivo.

Postgrey

Postgrey não está nos repositórios padrão do pacman, então vamos baixá-lo do AUR. Certifique-se de executar os seguintes comandos como um usuário normal e não como root.

cd ~  
wget http://aur.archlinux.org/packages/yaourt/yaourt.tar.gz  
tar xzvf yaourt.tar.gz  
cd yaourt  
makepkg -i  
yaourt --noconfirm -S postgrey

Opcionalmente, os arquivos /etc/postfix/postgrey_whitelist_recipients podem ser editados para permitir domínios e endereços de email que você confia. Isso é útil, pois esses endereços não serão atrasados devido ao greylisting.

Iniciando os Servidores

Finalmente! Terminamos. Agora vamos iniciar todos os servidores e esperar que todos funcionem.

Edite /etc/rc.conf e certifique-se de adicionar os daemons listados:

DAEMONS=(spamd postgrey dovecot postfix)

Isso garante que todos os daemons sejam iniciados automaticamente ao reiniciar. Por enquanto, inicie-os manualmente:

/etc/rc.d/spamd start  
/etc/rc.d/postgrey start  
/etc/rc.d/dovecot start  
/etc/rc.d/postfix start

Adicione mail.example.com aos seus clientes de email favoritos, insira suas configurações de conta de usuário, opcionalmente ative o SSL e seu servidor de email pessoal totalmente funcional está pronto!

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.