quinta-feira, 26 de junho de 2008

Tutorial servidor de email Postfix integrado com AD

Tutorial - Instalando um servidor de e-mail completo

Ambiente:

Active Directory
IP - 192.168.20.3
Domínio - dominio.local

Debian Postfix
IP - 192.168.20.21
Domínio - maquina.local

1 - Instalar os Kerberos para validar acesso ao AD.

# apt-get update
# apt-get install krb5-config krb5-user

2- Configuração do arquivo krb5.conf

[libdefaults]
default_realm = Dominio.LOCAL
[realms]
LUO.LOCAL = {
kdc = AD.luo.local
}

[domain_realm]
.kerberos.server = dominio.LOCAL
[logging]
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmin.log
default = FILE:/var/log/krb5lib.log
[appdefaults]
pam = {
ticket_lifetime = 1d
renew_lifetime = 1d
forwardable = true
proxiable = false
}

3 – Instalação do Samba
# apt-get install samba samba-common winbind
Conteudo do smb.conf
[global]
workgroup = Dominio
password server = 192.168.20.3
server string = %h server (Samba %v)
realm = Dominio.LOCAL
security = ADS
dns proxy = no
Página 8 de 20
log file = /var/log/samba/log.%m
max log size = 1000
syslog = 0
panic action = /usr/share/samba/panic-action %d
encrypt passwords = true
obey pam restrictions = yes
invalid users = root
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\sUNIX\spassword:* %n\n
*Retype\snew\sUNIX\spassword:* %n\n .
socket options = TCP_NODELAY
bind interfaces only = yes
winbind separator = /
winbind uid = 10000-20000
winbind gid = 10000-20000
winbind enum users = yes
winbind enum groups = yes
winbind use default domain = yes
log file = /var/log/samba/log.%m
log level = 9
max log size = 1000

4 – Conteudo do arquivo nsswitch.conf
passwd: compat winbind
group: compat winbind
shadow: compat
hosts: files dns
networks: files
Página 9 de 20
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis

5 – Instalação do apache com suporte a ssl:

# apt-get install apache-ssl apache-common apache2-utils php4
Criação dos certificados.
#openssl genrsa –out ssl.key/ dominio.LOCAL.key 1024
# openssl req -new -key dominio.LOCAL.key -out dominio.LOCAL.csr

6 – Instalação do Postfix e suporte a TLS
apt-get install postfix postfix-tls
configuração do main.cf

#Configuraç do servidor
smtpd_banner = $myhostname Mail Transfer Agent
biff = no
append_dot_mydomain = no
delay_warning_time = 2h
command_time_limit = 1h
myhostname = dominio.com
#alias_maps = hash:/etc/aliases
#alias_database = hash:/etc/aliases
mydomain = luo.co.ao
myorigin = $mydomain
mydestination = $myhostname
$mydomain
relay_domains = $mydestination

relayhost =
recipient_delimiter = +
#fallback_transport = /usr/bin/maildrop
inet_interfaces = all
debug_peer_level = 9
disable_vrfy_command = yes
message_size_limit = 15360000
mailbox_size_limit = 120000000
home_mailbox = Maildir/
#mail_spool_directory = /var/mail/
mynetworks = 127.0.0.0/8 192.168.0.0/16 172.18.0.0/16

# body_checks, com a lista encontrada em www.malware.com.br
body_check = regexp:/etc/postfix/body-deny
mime_header_checks =regexp:/etc/postfix/anexos
body_checks = regexp:/etc/postfix/anexos
# SSL config
smtpd_use_tls = yes
smtpd_tls_auth_only = no
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /etc/postfix/ssl/LUO.local.key
smtpd_tls_CAfile = /etc/postfix/ssl/LUO.local.crt
#smtpd_tls_cert_file = /etc/postfix/ssl/LUO.local.crt
#smtpd_tls_CAfile = /etc/postfix/ssl/LUO.local.csr
smtpd_tls_loglevel = 9
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
# SASL smtp-auth
Página 11 de 20
smtpd_sasl_auth_enable = yes
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
#smtpd_sasl_local_domain = $myhostname
broken_sasl_auth_clients = yes
#smtpd_tls_auth_only = yes
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination,
check_client_access hash:/etc/postfix/whitelist
smtpd_helo_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
permit
#smtpd_client_restrictions =
# hash:/etc/postfix/access,
#reject_unknown_client,
# permit
smtpd_sender_restrictions =
permit_mynetworks, permit_sasl_authenticated,
#reject_unknown_sender_domain,
reject_unauth_pipelining,
#reject_non_fqdn_sender,
reject_rbl_client zen.spamhaus.org,
check_client_access hash:/etc/postfix/whitelist,
permit

#===== AMAVIS ==============
content_filter = smtp-amavis:[127.0.0.1]:10024

7 – Instalação dos pacotes sasl2:
apt-get install libsasl2-modules sasl2-bin

7.1 - Criação do arquivo smtpd.conf:
/etc/postfix/smtpd.conf
pwcheck_method: saslauthd
mech_list: plain login
log_level: 7
7.2 – Edição do arquivo saslauthd:
#START=yes
por:
START=yes

8 - Criação do arquivo /etc/pam.d/smtp:
auth required pam_winbind.so
account required pam_winbind.so

9 - Edite o /etc/postfix/master.cf substituindo as linhas:
smtp inet n - - - - smtpd
por:
smtp inet n - n - - smtpd

Para todas as opções chroot.

No final do arquivo adicionar a seguinte instrução para o amavis:
###Configuracao para para o Amavis
smtp-amavis unix - - n - 2 smtp
-o smtp_data_done_timeout=1200
-o disable_dns_lookups=yes
127.0.0.1:10025 inet n - n - - smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o mynetworks=127.0.0.0/8
retry unix - - - - - error

10 – Instalação do Courier
Pacotes necessários:
# apt-get install courier-base courier-pop courier-pop-ssl courier-ssl courier-imap
courier authdaemon
10.1 – Edição do conteudo do imap e pop3:
bnimail:/etc/apache-ssl/ssl.crt# cat /etc/pam.d/imap
#%PAM-1.0
auth required pam_winbind.so
account required pam_winbind.so
#auth required pam_unix.so nullok
#account required pam_unix.so
password required pam_unix.so
session required pam_unix.so

luomail:/# cat /etc/pam.d/pop3
#%PAM-1.0
auth required pam_winbind.so
account required pam_winbind.so
#auth required pam_unix.so nullok
#account required pam_unix.so
password required pam_unix.so
session required pam_unix.so

11- Criação do Script de usuarios AD:
Conteudo do arquivo:
#!/bin/bash
ARQ_AD=“/etc/LUO.LOCAL/AD”
ARQ_LOCAL=“/etc/LUO.LOCAL/local”
ARQ_CRIA=“/etc/LUO.LOCAL/cria”
ARQ_DELETE=“/etc/LUO.LOCAL/deleta”
#Gerando lista de usunrio do AD por ordem alfabetica
wbinfo -u | grep -v '\$' | sort > ${ARQ_AD}
#Comparando a lista nova com a lista existente p/ criar users
comm -13 ${ARQ_LOCAL} ${ARQ_AD} > ${ARQ_CRIA}
#Criando Diretorio HOME
for i in $(cat /etc/LUO.LOCAL/cria)
do
mkdir /var/mail/${i}
maildirmake /var/mail/${i}/Maildir
chown -R ${i} /var/mail/${i}
#Descomentar linha abaixo para definir quota
setquota -F vfsv0 ${i} 105000 109000 0 0 -a /var/mail
done
#Copiando usuarios novos na base local e ordena alfabeticamente
Página 15 de 20
cat ${ARQ_CRIA} >> ${ARQ_LOCAL} && cat ${ARQ_LOCAL} | sort > ${ARQ_CRIA}
&& cat ${ARQ_CRIA} > ${ARQ_LOCAL}
&& rm ${ARQ_CRIA}
#Comparando a lista existente com a lista nova p/ remover users
comm -23 ${ARQ_LOCAL} ${ARQ_AD} > ${ARQ_DELETE}
#Deletando diretorio HOME
#for i in $(cat =“/etc/LUO.LOCAL/deleta)
#do
#rm -rf /var/mail/${i}
#done
#Removendo usuario excluidos da base local
#cat ${ARQ_DELETE} >> ${ARQ_LOCAL} && sort ${ARQ_LOCAL} >
${ARQ_DELETE} && uniq - u
${ARQ_DELETE} > ${ARQ_LOCAL} && rm ${ARQ_DELETE}rquivo.

12 – Instalação Spamassassin
#apt-get install spamassassin
Edição do arquivo de inicialização do spamassassin:
De:
# Change to one to enable spamd
ENABLED=0
Por:
# Change to one to enable spamd
ENABLED=1
No arquivo /etc/spamassassin/local.cf
# Set file-locking method (flock is not safe over NFS, but is faster)
#
Página 16 de 20
# lock_method flock
# Set the threshold at which a message is considered spam (default: 5.0)
#
required_score 5.0
# Use Bayesian classifier (default: 1)
#
use_bayes 1
# Bayesian classifier auto-learning (default: 1)
#
bayes_auto_learn 1
# Enable or disable network checks
skip_rbl_checks 0
use_razor2 1
use_dcc 1
use_pyzor 1
#
# # Mail using languages used in these country codes will not be marked
# # as being possibly spam in a foreign language.
ok_languages all
#
# # Mail using locales used in these country codes will not be marked
# # as being possibly spam in a foreign language.
ok_locales en ru
# Set headers which may provide inappropriate cues to the Bayesian
# classifier
#

# bayes_ignore_header X-Bogosity
# bayes_ignore_header X-Spam-Flag
# bayes_ignore_header X-Spam-Status

13 – Instalação do Amavis
#apt-get install amavis
Configuração do amavis no arquivo /etc/postfix/master.cf
Coloca na ultima linha do arquivo.
smtp-amavis unix - - n - 2 smtp
-o smtp_data_done_timeout=1200
-o disable_dns_lookups=yes
127.0.0.1:10025 inet n - n - - smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o mynetworks=127.0.0.0/8
retry unix - - - - - error

Suprindo as dependências do Perl:
Instalando dependências do Perl com o Perl-CPAN.
Iniciando a shell CPAN:
# perl -MCPAN -e shell
Instalando:
cpan> install File::MMagic
Página 18 de 20
cpan> install Config::IniFiles
cpan> install Convert::TNEF
cpan> install Convert::UUlib
cpan> install Compress::Zlib
cpan> install Archive::Tar
cpan> install Archive::Zip
cpan> install Unix::Syslog
cpan> install MIME::Base64
cpan> install Net::Server
cpan> install Net::SMTP
Should all FTP connections be passive (y|n) ? [no] no
cpan> install Digest::MD5
cpan> install Time::HiRes
cpan> install Mail::SpamAssassin
cpan> install Digest::SHA1
cpan> install HTML::Parser
cpan> install Net::DNS
cpan> install IP::Country
cpan> install Net::Ident
cpan> install LWP::UserAgent
cpan> install HTTP::Date
cpan> exit

Edite o arquivo /etc/amavis/conf.d/15-content_filter_mode e descomente os seguintes
blocos de texto:
@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);

Isso habilita a checagem contra vírus e spams.
Adicione o amavis no grupo do clamav e vice-versa, isso é necessário para que
eles possam acessar uns os arquivos do outro:
# adduser clamav amavis
# adduser amavis clamav
Inicie o serviço do amavis:
Página 19 de 20
# /etc/init.d/amavis start
Reinicie o serviço do clamav:
# /etc/init.d/clamav-daemon restart
14 – Instalação de ferramentas de relatório .
Configurar o pflogsumm/mailgraph/isoqlog
Instalar os pacotes necessários:
# apt-get update
# apt-get install pflogsumm procmail
Edite o arquivo /etc/logrotate.conf e adicione o seguinte bloco de texto:
/var/log/mail.log {
missingok
daily
rotate 7
create
compress
start 0
}
Isso garante o rotacionamento do log uma vez por dia, compactando os arquivos
antigos do log.
Crie o arquivo /usr/local/sbin/postfix_report.sh, que utilizaremos para a geração
dos relatórios, e envio dos mesmos via e-mail.
Dica: O binário formail faz parte do pacote procmail.
#!/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
gunzip /var/log/mail.log.0.gz
pflogsumm /var/log/mail.log.0 | formail -c -I"Subject: Estatitiscas de e-mail luo.co.ao" -
I"From: root@luo.co.ao" -I"To: anderson.nascimento em luo dot co dot ao," -
I"Received: from luo.co.ao ([192.168.20.21])" | sendmail
anderson.nascimento em luo dot co dot ao
gzip /var/log/mail.log.0
exit 0
Após isto, tornaremos o script executável:
# chmod 755 /usr/local/sbin/postfix_report.sh
Após isto, iremos adicionar a seguinte entrada na crontab:
0 7 * * * /usr/local/sbin/postfix_report.sh &> /dev/null
# apt-get update
# apt-get install isoqlog mailgraph
A configuração do isoqlog e do mailgraph é totalmente realizada através do
debconf, é só responder as perguntas, normalmente os valores default já são os
recomendados, altere-os, caso haja necessidade.

Fontes:

http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=5501

http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=6417

Nenhum comentário: