Antes de iniciar
Um servidor SMTP deve representar uma preocupação constante ao nível da segurança.
Caso o servidor esteja mal configurado, pode eventualmente ser utilizado por terceiros, para envio de mensagens em nome de outrem ou para envio de spam. Para além do eventual aumento da factura Internet, poderão surgir consequências mais graves, como a inclusão do domínio nas listas negras, (ficando impossibilitado de enviar emails genuínos), ou mesmo legais.
Objectivo
Instalar um servidor de envio de emails baseado no protocolo SMTP para utilização da rede local.
Instalação
A instalação oferece uma série de configurações predefinidas. Seleccionar a opção "Site Internet". Será também pedido o nome de email que deverá ser "home.lan".
server:~# apt-get install postfix
Configuração
Embora o login root receba emails, é preferível que estes sejam redireccionados para um utilizador "humano". Esses "aliases" são definidos no ficheiro /etc/aliases:
# See man 5 aliases for format
postmaster: root
root: fribeiro
Sempre que se edita o ficheiro /etc/aliases, a base de dados correspondente deve ser actualizada:
server:~# newaliases
A origem dos emails enviados, ou seja, a parte após o “@”, é definida na única linha do ficheiro /etc/mailname:
home.lan
A restante configuração é guardada no ficheiro /etc/postfix/main.cf.
Durante a Instalação do servidor IMAP, ficou definido que a localização e o tipo de caixas de correio era "Maildir". A configuração do postfix deverá indicar que a entrega de correio deve ser feita nessa localização, o que é feito no ficheiro /etc/postfix/main.cf:
# [...]
# Entregar correio em ~/Mailbox
home_mailbox = Maildir/
# [...]
Definir os endereços por onde o postfix aceita receber ligações:
# [...]
# Interfaces por onde são aceites ligações
inet_interfaces = 127.0.0.1, 192.168.1.100
# [...]
Definir também a lista de clientes privilegiados (que podem, por exemplo, usar o servidor para enviar emails para outro domínio (relay)):
# [...]
# Clientes de confianca
mynetworks = 127.0.0.0/8, 192.168.1.0/24
# [...]
Definir a lista de domínios para os quais o servidor é o destino final:
# Emails para estes dominios sao entregues neste servidor
mydestination = home.lan, server.home.lan, localhost.home.lan, localhost
Encriptação da ligação
As ligações ao servidor poderão ser feitas de um modo encriptado (TLS) (smtpd_use_tls = yes) e garantindo que só assim a autenticação será aceite (smtpd_tls_auth_only = yes). Podem também ser usados os certificados os gerados previamente em vez dos gerados automaticamente durante a instalação do postfix:
# [...]
# TLS parameters
smtpd_use_tls = yes
smtpd_tls_auth_only = yes
smtpd_tls_cert_file = /etc/ssl/certs/server.crt
smtpd_tls_key_file = /etc/ssl/private/server.key.insecure
smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache
# [...]
Segurança
Devem ser definidas restrições bastante rigorosas ao acesso ao servidor SMTP.
# [...]
## Seguranca
# Aceitar ligacoes apenas a partir da rede local
smtpd_client_restrictions = permit_mynetworks,
reject
# Utilizadores locais podem enviar emails para qualquer endereco
smtpd_recipient_restrictions = permit_mynetworks,
reject_unauth_destination
# Rejeitar ligacoes de clientes que nao saibam o seu hostname
smtpd_helo_restrictions = reject_unknown_sender_domain
# Rejeitar email de dominios que nao existem
smtp_sender_restrictions = reject_unknown_sender_domain
# [...]
Reiniciar o serviço SMTP:
server:~# /etc/init.d/postfix restart
Verificação
Verificar que é possível ligar ao servidor smtp:
server:~# telnet localhost smtp
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 server.home.lan ESMTP Postfix (Debian/GNU)
EHLO localhost
250-server.home.lan
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
MAIL FROM: fribeiro
250 2.1.0 Ok
RCPT TO: fribeiro
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
Subject: test
testing 123
.
250 2.0.0 Ok: queued as A2BF81ED81
QUIT
221 2.0.0 Bye
Connection closed by foreign host.
A linha 250-STARTTLS indica que o servidor aceita ligações encriptadas. No entanto, no teste não é usada a encriptação TLS, porque a ligação é feita do próprio sistema, o que é considerado seguro.
Configuração clientes
Num cliente email, como o Thunderbird, criar uma conta de correio de saída (SMTP), indicando como endereço o do servidor (192.169.1.100) e porta 25. Na zona de segurança, não activar autenticação. Nas opções de ligação segura, podem ser usado o protocolo TLS ou nenhum. O protocolo SSL não poderá ser usado (por agora).
Enviar algumas mensagens para destinatários existentes e fictícios:
Deverão ser entregues emails que tenham como destinatários utilizadores válidos do domínio home.lan (Ex. nal.emoh|oriebirf#nal.emoh|oriebirf).
Emails para destinatários inexistentes do domínio home.lan serão recusado imediatamente (ex. nal.emoh|odicehnocsed#nal.emoh|odicehnocsed).
Demais emails (mesmo para utilizadores e domínios válidos) serão provavelmente recusados pelos servidores de destino. Neste caso, e passado algum tempo, o nosso servidor irá gerar uma mensagem a informar a razão da recusa.
Links relacionados
- Wikipedia: Smtp (http://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol)
- Wikipedia: Smtp (http://pt.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol)
- Wikipedia: Open Relay (http://pt.wikipedia.org/wiki/Open_relays)
- Wikipedia: Postfix (http://pt.wikipedia.org/wiki/Postfix)
- Postfix (http://www.postfix.org/)
- Postfix Configuration Parameters (http://www.postfix.org/postconf.5.html)
- Howto: Postfix and Dovecot on Ubuntu Dapper Drake (http://adomas.org/2006/08/postfix-dovecot/)





















Ribeiro gostaria de acrescentar uma linha de comando no main.cf do postfix, que sem ela o postfix nao faz a entrega na Maildir com ela o meu servidor passou a funcionar normalmente.
o parametro mail_spool_directory por padrao no debian é: mail_spool_directory=/var/mail ele tem que passar a ser mail_spool_directory=/home/postfix alé é claro do parametro que voce postou no tutorial
home_mailbox=Maildir/ .
Espero que eu possa ter contribuido para seu tutorial que esta excelente. Parabéns!
Alexandre Maise -
Para o MAILDIR funcionar, tive que comentar o seguinte parâmetro também!
mailbox_command = procmail -a "$EXTENSION"
Senão ele continuava a jogar para o mailbox…
=)
Olá boa tarde
Segui este teu tuturial e tenho gostado bastante do teu trabalho, muito bom.
tenho ainda 2 problemas que se calhar é só 1 ( sou um pouco verde nisto de servidores).
1º problema:
server:~# /etc/init.d/bind9 restart
Stopping domain name service…: bindrndc: connect failed: 127.0.0.1#953: connection refused
failed!
Starting domain name service…: bind failed!
2º problema:
server:~# telnet localhost
Trying 127.0.0.1…
telnet: Unable to connect to remote host: Connection refused
Se tiveres algum tempo disponivel para esta situação… Agradecia
A minha internet é do sapo router thompson ST516 v6 .
Obrigado