Postfix com autenticação em base LDAP no Slackware

Instalação do Postfix com autenticação em base LDAP, auto-resposta usando Gnarwl, autenticação de remetentes com SASL, utilização de TLS, criação automática dos diretórios dos usuários em formato Maildir com o Maildrop, gerenciamento de listas com o Mailman, antivírus Clamav, SpamAssassin, Courier POP3, webmail Squirrelmail, Isoqlog e Mailgraph.

[ Hits: 166.002 ]

Por: Felipe Domingos em 12/08/2008


main.cf do Postfix



Arquivo /etc/postfix/main.cf com lista, auto-reply, forward.

Esse arquivo, junto com o arquivo /etc/postfix/master.cf, são os arquivos principais do Postfix.

alias_database = hash:/etc/postfix/aliases
alias_maps = hash:/etc/postfix/aliases
append_dot_mydomain = no
biff = no
home_mailbox = Maildir/
inet_interfaces = all
inet_protocols = ipv4

### Desabilitar busca de nomes de usuários (usado para obter nomes válidos)
disable_vrfy_command = yes
delay_warning_time = 1h

ldapsource_bind = no
ldapsource_domain = dominio.com.br
ldapsource_query_filter = (&(mail=%s)(objectClass=qmailUser))
ldapsource_result_attribute = mail
ldapsource_search_base = dc=com,dc=br
ldapsource_server_host = IP_SERVIDOR_LDAP

ldapalias_bind = no
ldapalias_domain = dominio.com.br
ldapalias_query_filter = (&(mailAlternateAddress=%s)(objectClass=qmailUser))
ldapalias_result_attribute = mail
ldapalias_search_base = dc=com,dc=br
ldapalias_server_host = IP_SERVIDOR_LDAP

ldapvacation_bind = no
ldapvacation_domain = dominio.com.br
ldapvacation_server_host = IP_SERVIDOR_LDAP
ldapvacation_search_base = dc=com,dc=br
ldapvacation_query_filter = (&(|(mail=%s)(mailAlternateAddress=%s))(deliveryMode=reply))
ldapvacation_result_attribute = mail
ldapvacation_result_filter = %s,%u@autoreply.dominio.com.br
ldapvacation_scope = sub
ldapvacation_version = 3

ldapforward_domain= dominio.com.br
ldapforward_bind=no
ldapforward_server_host = IP_SERVIDOR_LDAP
ldapforward_search_base = ou=dominio,dc=com,dc=br
ldapforward_query_filter = (|(mail=%s)(mailalternateaddress=%s))
ldapforward_result_attribute = mail,mailForwardingAddress
ldapforward_scope = one
ldapforward_version = 3


mailbox_size_limit = 0
mailbox_command = /usr/bin/procmail -a "$EXTENSION"
mail_owner = postfix
default_privs = nobody
default_transport = smtp
sendmail_path = /usr/sbin/sendmail
newaliases_path = /usr/bin/newaliases
mailq_path = /usr/bin/mailq
command_directory = /usr/sbin
mydomain = dominio.com.br
myorigin = $mydomain


mydestination = $myhostname, localhost.$mydomain, localhost, $myorigin
myhostname = pf2.dominio.com.br
#mynetworks = 127.0.0.0/8
mynetworks_style = host
setgid_group = postdrop
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)

### Parametro que le auto-reply, forward, alias do ldap
virtual_alias_maps = ldap:ldapvacation, ldap:ldapforward, ldap:ldapsource, ldap:ldapalias

virtual_gid_maps = static:104
virtual_mailbox_base = /home/MENSAGENS/
virtual_mailbox_maps = ldap:ldapvacation, ldap:ldapforward, ldap:ldapsource, ldap:ldapalias
virtual_transport = maildrop
virtual_uid_maps = static:1002

### =========== QUOTA ============ ##
virtual_mailbox_limit_inbox = no
virtual_mailbox_limit_maps = ldap:ldapsource
virtual_mailbox_limit_override = yes
virtual_maildir_extended = yes
virtual_create_maildirsize = yes
virtual_mailbox_limit = 100000000
virtual_maildir_limit_message = "Sorry, the user's maildir has overdrawn his diskspace quota, please try again later."
virtual_overquota_bounce = yes

### ============ MAILDROP =========== ##
fallback_transport = maildrop
maildrop_destination_recipient_limit = 1
unknown_local_recipient_reject_code = 450

### ============= Tamanho Máximo das Mensagens ========= ###
# Setado em 10M
message_size_limit = 10240000

### ============== Máximo de Destinatários por Mensagem ======= ##
# Setado em 35 destinatários
smtpd_recipient_limit = 35

### ============== Autenticação de Usuários ================
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_path = smtpd
smtpd_sender_login_maps = ldap:ldapsource

### ============= Restrições de Envio ===============
# Numero máximo de conexões por host:
# smtpd_client_connection_count_limit = 50
# Numero máximo de conexões/minuto que um host pode fazer
# 0 (zero) deixa desabilitado
# smtpd_client_connection_rate_limit = 0
# anvil_rate_time_unit = 60s
# Hosts que podem "escapar" da restrição; normalmente, os hosts contidos em mynetworks.
# smtpd_client_connection_limit_exceptions = $mynetworks

smtpd_client_restrictions = check_client_access hash:/etc/postfix/rbl_client_exceptions,
        permit_sasl_authenticated,
        reject_unauth_pipelining,
        reject_rbl_client zen.spamhaus.org ,
        reject_rbl_client list.dsbl.org ,
        reject_rbl_client cbl.abuseat.org ,
        reject_rbl_client dul.dnsbl.sorbs.net

smtpd_recipient_restrictions = permit_sasl_authenticated,
        permit_mynetworks,
        reject_unauth_destination

smtpd_sender_restrictions = reject_unauthenticated_sender_login_mismatch,
        reject_sender_login_mismatch

### Habilita expressões nos emails
### É necessário para o mailman tb
recipient_delimiter = +
owner_request_special = no

### ============== Log de mensagens ================== ###
always_bcc = backup.log@dominio.com.br
### Pode ser feito através das diretivas:
#recipient_bcc_maps = hash:/etc/postfix/recipient_bcc
#sender_bcc_maps = hash:/etc/postfix/sender_bcc
### Nesse caso para domínios virtuais ou outras aplicações

### desabilitar duplicidade no log (aplicado direto no master.cf)
#receive_override_options = no_address_mappings

allow_mail_to_commands = alias
transport_maps = hash:/etc/postfix/transport

debug_peer_level = 2

### Opções de TLS
smtpd_tls_auth_only = no
smtp_use_tls = yes
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key
smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt
smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Instalando a SASL Library (Cyrus)
   3. Postfix
   4. Criando o certificado TLS
   5. Courier-Authlib
   6. Courier-imap
   7. Maildrop
   8. Clamav e Clamav-Filter
   9. SpamAssassin - Primeira forma
   10. SpamAssassin - Segunda forma (via CPAN)
   11. Integração do Spamassassin e criação do maildir automaticamente
   12. Mailman
   13. Gnarwl - autoresposta
   14. main.cf do Postfix
   15. Mais alguns detalhes
   16. Webmail Squirrelmail
   17. Serviços para subir no boot e outros
   18. Isoqlog e autenticação Apache em base LDAP
   19. Mailgraph
   20. Referências úteis e de algumas implementações utilizadas
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Acessando contas do Hotmail pelo Mozilla Mail

Reforçando a segurança do MTA Postfix com o Apolicy

Openfire no SLES 10 autenticando no Active Directory

Fazendo backup no Gmail via cliente de e-mail e IMAP

Montando um servidor de e-mail completo com Postfix

  
Comentários
[1] Comentário enviado por grandmaster em 12/08/2008 - 18:48h

Bem completo.

Gostei muito do artigo.

Pra ficar mais completo, apenas a checagem de SPF :D

---
Renato de Castro Henriques
CobiT Foundation 4.1 Certified ID: 90391725
http://www.renato.henriques.nom.br

[2] Comentário enviado por fag_oliv em 16/08/2008 - 21:58h

Sou novato com servidores de e-mail, estou tentando aprender. Gostaria de um esclarecimento, tua solucao exige que eu tenha um servidor ldap configurado?


Obrigado,


[3] Comentário enviado por Felipe Domingos em 18/08/2008 - 07:51h

grandmaster,

É realmente faltou a parte de SPF, assim que tiver um tempinho coloco para funcionar e coloco posto tb ^^

fag_oliv,

Sim, a solução que implementei utiliza uma base ldap.

t+

[4] Comentário enviado por danielmb em 11/09/2008 - 22:28h

Muito bom esse artigo Felipe.
Eu gostaria de ter um exemplo da estrutura ldap utilizada.
Eu tenho tentando implementar aqui, e tenho enfretado algumas dificuldades em relação a consulta do usuário na base ldap.
Estou lendo muito e aprendendo ainda mais, e seu artigo contribui demais, caso possa me ajudar com alguma orientação ficarei grato.
abraços

[5] Comentário enviado por Felipe Domingos em 16/09/2008 - 08:46h

Obrigado danielmb, quanto a estrutura no ldap tenho os seguintes schemas dentro do slapd.conf :

include /usr/local/etc/openldap/schema/core.schema
include /usr/local/etc/openldap/schema/cosine.schema
include /usr/local/etc/openldap/schema/nis.schema
include /usr/local/etc/openldap/schema/inetorgperson.schema
include /usr/local/etc/openldap/schema/samba.schema
include /usr/local/etc/openldap/schema/qmailuser.schema
include /usr/local/etc/openldap/schema/authldap.schema


Obs: o do samba está listado pq estou trabalhando na integração dele para utilização do mesmo usuário de email.
Obs2: muitos dos campos utilizados são baseados no qmailuser.schema.

Se tiver dificuldades, poste ou mande um email e tento ajudar.

T+

[6] Comentário enviado por c.rafael em 28/02/2009 - 00:39h

Olá , ..

Segui o seu tutorial para implementar um servidor de e-mail com ldap, porém não tive sucesso com o maildrop, ele não está gerando log e nem jogando os SPAM para a caixa dos SPAm de cada usuário.

Sabe o que pode ser?

[7] Comentário enviado por removido em 01/04/2009 - 14:28h

Artigo Matador!!!


Mas tenho uma dúvida.
Na aba 11, voce se refere a editar para...


mailMessageStore: /home/MENSAGENS
homeDirectory: /home/MENSAGENS/fox.mulder/Maildir


De que arquivo está falando que deve ser inseriadas essas linhas? É do ldap.conf ?

[8] Comentário enviado por Felipe Domingos em 01/04/2009 - 20:19h

Opa,

gilmar_moretto

Na verdade as duas linhas não se tratam de arquivo e sim de duas entradas do ldap, o usuário no ldap deve possuir esses dois campos.

Daqui alguns dias estarei implementando novamente a solução abordada nesse artigo e publico uma entrada completa de um usuário no ldap, isso deve ajudar a entender as partes relacionadas a campos do LDAP.

T+

[9] Comentário enviado por removido em 02/04/2009 - 14:19h

ha! É mesmo!
Nem me toquei que são entradas que devem ser incluídas nos arquivos ldif , o artigo fala de tantos confs diferentes que nem me toquei que mais cedo ou mais tarde deveria falar das entradas também.


Grato por tirar essa dúvida


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts