Beruflich Dokumente
Kultur Dokumente
Preparação
confs.zip
Atenção: O MailScanner necessita de pelo menos 2GB de memória RAM para rodar razoavelmente (processar 10.000
mails dia).
Desligue o SElinux.
# sestatus
# cd /etc/sysconfig
# vi selinux
Ajuste a hora do sistema. Ajustar data e hora é fundamental para o funcionamento do sub-sistema de mail.
# date -s 16:40
1 of 24 04/18/2011 05:19 PM
Caso de Estudo: E-mail Server ISP [Artigo] http://www.vivaolinux.com.br/artigos/impressora.p...
# system-config-network-tui
# cd /etc
# cd sysconfig
# cd network-scripts
# vi ifcfg-eth0
# service network restart
Configure uma entrada no /etc/hosts adequada para seu nome de maquina e IP:
# vi /etc/hosts
# vi /etc/inittab
# ip addr list
Verifique se existe um servidor de DNS válido no /etc/resolv.conf. Teste usando: host www.google.com.br ou a
ferramenta dig. Para o envio e recebimento de e-mails a resolução de nomes do servidor deve estar 100% funcional.
# system-config-language
# yum update
# cp /etc/openldap/slapd.conf slapd.conf.original
2 of 24 04/18/2011 05:19 PM
Caso de Estudo: E-mail Server ISP [Artigo] http://www.vivaolinux.com.br/artigos/impressora.p...
# cp /etc/postfix/main.cf main.cf.original
# cp /etc/postfix/master.cf master.cf.original
# cp /etc/dovecot.conf dovecot.conf.original
LDAP e Phamm
www.phamm.org
Descompacte:
Copie todos os schemas do diretório /schema após ter descompactado para /etc/openldap/schema.
Copie o conteúdo descompactado para o diretório raiz do webserver (ex.: /var/www/html/phamm - eu sugiro /var/www
/html/admin).
Construa seu arquivo de configuração do openldap (slapd.conf) parecido com o exemplo fornecido.
Para gerar um novo hash de password do rootdn use, copiando e colando a saída para o slapd.conf.
# slappasswd
# cp /usr/share/doc/openldap-servers-2.4.15/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
# chown ldap:ldap /var/lib/ldap/DB_CONFIG
# chmod 600 /var/lib/ldap/DB_CONFIG
/etc/openldap/slapd.conf:
#
# See slapd.conf(5) for details on configuration options.
# This file should NOT be world readable.
#
#include /etc/openldap/schema/corba.schema
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
#include /etc/openldap/schema/duaconf.schema
#include /etc/openldap/schema/dyngroup.schema
include /etc/openldap/schema/inetorgperson.schema
#include /etc/openldap/schema/java.schema
#include /etc/openldap/schema/misc.schema
include /etc/openldap/schema/nis.schema
include /etc/openldap/schema/openldap.schema
#include /etc/openldap/schema/ppolicy.schema
#include /etc/openldap/schema/collective.schema
include /etc/openldap/schema/phamm.schema
include /etc/openldap/schema/ISPEnv2.schema
include /etc/openldap/schema/amavis.schema
include /etc/openldap/schema/dnsdomain2.schema
include /etc/openldap/schema/pureftpd.schema
include /etc/openldap/schema/samba.schema
3 of 24 04/18/2011 05:19 PM
Caso de Estudo: E-mail Server ISP [Artigo] http://www.vivaolinux.com.br/artigos/impressora.p...
pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args
# The next three lines allow use of TLS for encrypting connections using a
# dummy test certificate which you can generate by changing to
# /etc/pki/tls/certs, running "make slapd.pem", and fixing permissions on
# slapd.pem so that the ldap user or group can read it. Your client software
# may balk at self-signed certificates, however.
# TLSCACertificateFile /etc/pki/tls/certs/ca-bundle.crt
# TLSCertificateFile /etc/pki/tls/certs/slapd.pem
# TLSCertificateKeyFile /etc/pki/tls/certs/slapd.pem
access to dn.one="dc=example,dc=tld"
by self write
by users read
by anonymous auth
4 of 24 04/18/2011 05:19 PM
Caso de Estudo: E-mail Server ISP [Artigo] http://www.vivaolinux.com.br/artigos/impressora.p...
#######################################################################
# ldbm and/or bdb database definitions
#######################################################################
database bdb
suffix "dc=example,dc=tld"
checkpoint 1024 15
rootdn "cn=admin,dc=example,dc=tld"
# Cleartext passwords, especially for the rootdn, should
# be avoided. See slappasswd(8) and slapd.conf(5) for details.
# Use of strong authentication encouraged.
rootpw {SSHA}hz1xghfgh4FiTpTZHSVfY7L5sgObSaiFk
# enable monitoring
database monitor
Copie o arquivo config.inc.example.php para config.inc.php, ele deve se parecer com o exemplo abaixo, está localizado
no diretório root do phamm.
<?php
/*
5 of 24 04/18/2011 05:19 PM
Caso de Estudo: E-mail Server ISP [Artigo] http://www.vivaolinux.com.br/artigos/impressora.p...
/**
* The main Phamm config file
*
* @package Phamm
* @subpackage configuration
* @author Alessandro De Zorzi <adezorzi AT rhx DOT it>
**/
// *============================*
// *=== LDAP Server Settings ===*
// *============================*
// The container
define ('SUFFIX','dc=example,dc=tld');
// *============================*
// *=== Layout Settings ===*
// *============================*
// Page title
define('ORG_TITLE','Phamm');
// URL
define('ORG_URL','http://www.phamm.org');
// Logo
define('ORG_LOGO', './img/phamm_100.png');
6 of 24 04/18/2011 05:19 PM
Caso de Estudo: E-mail Server ISP [Artigo] http://www.vivaolinux.com.br/artigos/impressora.p...
// CSS Style
$style = 'phamm';
// Default language
define ('DEFAULT_LANGUAGE','en_GB');
// *============================*
// *=== Plugins Settings ===*
// *============================*
// *============================*
// *=== System Settings ===*
// *============================*
7 of 24 04/18/2011 05:19 PM
Caso de Estudo: E-mail Server ISP [Artigo] http://www.vivaolinux.com.br/artigos/impressora.p...
define ('HIDE_VERSION',0);
// Welcome message
define ('SEND_WELCOME',0);
$welcome_msg = '../welcome_message.txt';
$welcome_subject = 'Welcome!';
# $welcome_sender = 'postmaster@localhost';
# $welcome_bcc = 'postmaster@localhost';
// *============================*
// *=== Advanced Settings ===*
// *============================*
?>
Inicie o ldap (service ldap start) ou (service slapd start). Para o Fedora 12 em diante, você deve fazer o backward
compatibility (mv /etc/openldap/slapd.d /etc/openldap/disabled).
Tente acessar através de um browser o phamm no servidor acessando o diretório /phamm no diretório root do apache.
Tente logar-se usando usuário admin com a senha que você criou.
Neste momento você já deve poder criar domínios e contas de emails através do phamm, se não puder, comece tudo
novamente pois existe algo de errado.
OPCIONAL - Você pode instalar o phpldapadmin para visualizar seu diretório ldap (yum install phpldapadmin) Atenção!
Use o phpldapadmin somente para debug, ou seja, visualizar em detalhes sua base ldap. Nunca use o phpldapadmin
para gerenciar as contas e domínios de seu mail server, para isso, deixe o phamm fazer seu trabalho.
8 of 24 04/18/2011 05:19 PM
Caso de Estudo: E-mail Server ISP [Artigo] http://www.vivaolinux.com.br/artigos/impressora.p...
Postfix e Dovecot
Abaixo você encontra todos os arquivos de configuração que estão em produção em meu servidor, seus arquivos devem
se parecer com os meus.
Substitua seus arquivos originais pelos arquivos modelos, recomendo fazer download nos links abaixo ao invés de copiar
e colar. Guarde sempre um backup de seus arquivos originais.
/etc/postfix/main.cf:
default_destination_concurrency_limit=50
default_destination_recipient_limit=50
default_process_limit=200
smtp_mx_session_limit=100
smtpd_client_connection_count_limit=100
smtp_destination_concurrency_limit=100
maximal_backoff_time = 1000s
minimal_backoff_time = 300s
smtpd_helo_required = yes
disable_vrfy_command = yes
strict_rfc821_envelopes = yes
ldap_bind_dn = cn=phamm,o=hosting,dc=example,dc=tld
ldap_bind_pw = zymTask938
ldap_search_base = o=hosting,dc=example,dc=tld
ldap_domain = dc=example,dc=tld
ldap_server_host = localhost
ldap_server_port = 389
ldap_version = 3
# transports
transport_server_host = $ldap_server_host
9 of 24 04/18/2011 05:19 PM
Caso de Estudo: E-mail Server ISP [Artigo] http://www.vivaolinux.com.br/artigos/impressora.p...
transport_search_base = $ldap_search_base
transport_query_filter = (&(&(vd=%s)(objectClass=VirtualDomain))(accountActive=TRUE))
transport_result_attribute = postfixTransport
transport_cache = no
transport_bind = yes
transport_scope = one
transport_bind_dn = $ldap_bind_dn
transport_bind_pw = $ldap_bind_pw
transport_version = $ldap_version
# aliases
aliases_server_host = $ldap_server_host
aliases_search_base = $ldap_search_base
aliases_query_filter = (&(&(objectClass=VirtualMailAlias)(mail=%s))(accountActive=TRUE))
aliases_result_attribute = maildrop
aliases_bind = yes
aliases_cache = no
aliases_bind_dn = $ldap_bind_dn
aliases_bind_pw = $ldap_bind_pw
aliases_version = $ldap_version
# Accounts
accounts_server_host = $ldap_server_host
accounts_search_base = $ldap_search_base
accounts_query_filter = (&(&(objectClass=VirtualMailAccount)(mail=%s))(accountActive=TRUE))
accounts_result_attribute = mailbox
accounts_cache = no
accounts_bind = yes
accounts_bind_dn = $ldap_bind_dn
accounts_bind_pw = $ldap_bind_pw
accounts_version = $ldap_version
accountsmap_server_host = $ldap_server_host
accountsmap_search_base = $ldap_search_base
accountsmap_query_filter = (&(&(objectClass=VirtualMailAccount)(mail=%s))(accountActive=TRUE))
accountsmap_result_attribute = mail
accountsmap_cache = no
accountsmap_bind = yes
accountsmap_bind_dn = $ldap_bind_dn
accountsmap_bind_pw = $ldap_bind_pw
accountsmap_version = $ldap_version
# virtual quota
quota_server_host = $ldap_server_host
quota_search_base = $ldap_search_base
quota_query_filter = (&(&(objectClass=VirtualMailAccount)(mail=%s))(accountActive=TRUE))
quota_result_attribute = quota
quota_cache = no
quota_bind = yes
quota_bind_dn = $ldap_bind_dn
quota_bind_pw = $ldap_bind_pw
quota_version = $ldap_version
# transport_maps
maildrop_destination_concurrency_limit = 2
maildrop_destination_recipient_limit = 1
transport_maps = hash:/etc/postfix/transport, ldap:transport
mydestination = $transport_maps, localhost, localhost.localdomain, $myhostname, localhost.$mydomain, $mydomain
10 of 24 04/18/2011 05:19 PM
Caso de Estudo: E-mail Server ISP [Artigo] http://www.vivaolinux.com.br/artigos/impressora.p...
virtual_gid_maps = static:500
#virtual_alias_maps = ldap:aliases, ldap:accountsmap, hash:/etc/postfix/virtual, ldap:virtualforward
owner_request_special = no
qmgr_message_active_limit = 40000
qmgr_message_recipient_limit = 40000
header_checks = regexp:/etc/postfix/header_checks
#####
# Mail to reply for gnarwl and mail to forward during vacation
recipient_bcc_maps = ldap:vfm
vfm_server_host = $ldap_server_host
vfm_search_base = $ldap_search_base
#vfm_query_filter = (&(&(objectClass=VirtualMailAccount)(mail=%s))(vacationActive=TRUE)(forwardActive=FALSE)
(accountActive=TRUE)(delete=FALSE))
vfm_query_filter = (&(&(objectClass=VirtualMailAccount)(mail=%s))(vacationActive=TRUE)(accountActive=TRUE)
(delete=FALSE))
vfm_result_attribute = mailAutoreply
vfm_cache = no
vfm_bind = yes
vfm_bind_dn = $ldap_bind_dn
vfm_bind_pw = $ldap_bind_pw
vfm_version = $ldap_version
gnarwl_destination_concurrency_limit = 1
gnarwl_destination_recipient_limit = 1
/etc/postfix/master.cf:
#
# Postfix master process configuration file. For details on the format
# of the file, see the master(5) manual page (command: "man 5 master").
#
#
==========================================================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (yes) (never) (100)
#
==========================================================================
smtp inet n - n - 1000 smtpd
#submission inet n - n - - smtpd
# -o smtpd_enforce_tls=yes
# -o smtpd_sasl_auth_enable=yes
# -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#smtps inet n - n - - smtpd
# -o smtpd_tls_wrappermode=yes
11 of 24 04/18/2011 05:19 PM
Caso de Estudo: E-mail Server ISP [Artigo] http://www.vivaolinux.com.br/artigos/impressora.p...
# -o smtpd_sasl_auth_enable=yes
# -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#628 inet n - n - - qmqpd
pickup fifo n - n 60 1 pickup
cleanup unix n - n - 0 cleanup
qmgr fifo n - n 300 1 qmgr
#qmgr fifo n - n 300 1 oqmgr
tlsmgr unix - - n 1000? 1 tlsmgr
rewrite unix - - n - - trivial-rewrite
bounce unix - - n - 0 bounce
defer unix - - n - 0 bounce
trace unix - - n - 0 bounce
verify unix - - n - 1 verify
flush unix n - n 1000? 0 flush
proxymap unix - - n - - proxymap
smtp unix - - n - - smtp
# When relaying mail as backup MX, disable fallback_relay to avoid MX loops
relay unix - - n - - smtp
-o fallback_relay=
# -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq unix n - n - - showq
error unix - - n - - error
discard unix - - n - - discard
local unix - n n - - local
virtual unix - n n - - virtual
lmtp unix - - n - - lmtp
anvil unix - - n - 1 anvil
scache unix - - n - 1 scache
#
# ====================================================================
# Interfaces to non-Postfix software. Be sure to examine the manual
# pages of the non-Postfix software to find out what options it wants.
#
# Many of the following services use the Postfix pipe(8) delivery
# agent. See the pipe(8) man page for information about ${recipient}
# and other message envelope options.
# ====================================================================
#
# maildrop. See the Postfix MAILDROP_README file for details.
# Also specify in main.cf: maildrop_destination_recipient_limit=1
#
maildrop unix - n n - - pipe
flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${recipient}
#
# The Cyrus deliver program has changed incompatibly, multiple times.
#
#old-cyrus unix - n n - - pipe
# flags=R user=cyrus argv=/usr/lib/cyrus-imapd/deliver -e -m ${extension} ${user}
# Cyrus 2.1.5 (Amos Gouaux)
# Also specify in main.cf: cyrus_destination_recipient_limit=1
#cyrus unix - n n - - pipe
# user=cyrus argv=/usr/lib/cyrus-imapd/deliver -e -r ${sender} -m ${extension} ${user}
#
# See the Postfix UUCP_README file for configuration details.
#
#uucp unix - n n - - pipe
# flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
#
# Other external delivery methods.
#
dovecot unix - n n - - pipe
flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${recipient}
gnarwl unix - n n - - pipe
flags=F user=vmail argv=/usr/local/bin/gnarwl -a ${user}@${nexthop} -s ${sender}
12 of 24 04/18/2011 05:19 PM
Caso de Estudo: E-mail Server ISP [Artigo] http://www.vivaolinux.com.br/artigos/impressora.p...
#/etc/postfix/transport
.autoreply gnarwl:
#/etc/postfix/header_checks
/^Received:/ HOLD
#/etc/dovecot.conf
auth_verbose = no
mail_debug = no
auth_debug_passwords = no
verbose_proctitle = no
mail_uid = vmail
mail_gid = vmail
syslog_facility = mail
base_dir = /var/run/dovecot/
protocols = imap imaps pop3 pop3s
protocol imap {
mail_plugins = quota imap_quota
imap_client_workarounds = outlook-idle
}
protocol pop3 {
mail_plugins = quota
pop3_no_flag_updates = yes
pop3_reuse_xuidl = no
pop3_lock_session = no
pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
}
protocol lda {
mail_plugins = quota sieve
postmaster_address = postmaster@zapt.com
auth_socket_path = /var/run/dovecot/auth-master
log_path = /var/log/dovecot-deliver-errors.log
info_log_path = /var/log/dovecot-deliver.log
}
plugin {
quota = maildir:User quota
quota_rule = *:storage=20M
quota_rule2 = Trash:storage=10M
quota_warning = storage=80%% /home/vmail/bin/quota-warning.sh 80
quota_warning2 = storage=90%% /home/vmail/bin/quota-warning.sh 90
quota_warning3 = storage=100%% /home/vmail/bin/quota-warning.sh 100
sieve = /home/vmail/%d/%n/.dovecot.sieve
}
listen = *
shutdown_clients = yes
log_timestamp = "%b %d %H:%M:%S "
syslog_facility = mail
disable_plaintext_auth = no
login_chroot = yes
login_user = postfix
login_process_per_connection = yes
login_processes_count = 2
login_max_processes_count = 128
login_max_connections = 256
login_greeting = Welcome to Dovecot ISP Server.
login_log_format_elements = user=<%u> method=%m rip=%r lip=%l %c
login_log_format = %$: %s
mail_location = maildir:/home/vmail/%d/%u/Maildir
first_valid_uid = 89
13 of 24 04/18/2011 05:19 PM
Caso de Estudo: E-mail Server ISP [Artigo] http://www.vivaolinux.com.br/artigos/impressora.p...
pop3_uidl_format = %08Xu%08Xv
auth default {
mechanisms = PLAIN LOGIN
passdb ldap {
args = /etc/dovecot-ldap.conf
}
userdb ldap {
args = /etc/dovecot-ldap.conf
}
socket listen {
master {
path = /var/run/dovecot/auth-master
mode = 0666
user = vmail
group = vmail
}
client {
path = /var/spool/postfix/private/auth
mode = 0666
user = postfix
group = postfix
}
}
user = vmail
}
/etc/dovecot-ldap.conf:
hosts = localhost
auth_bind = yes
sasl_bind = no
auth_bind_userdn = mail=%u,vd=%d,o=hosting,dc=example,dc=tld
ldap_version = 3
base = o=hosting,dc=example,dc=tld
dn = cn=phamm,o=hosting,dc=example,dc=tld
dnpass = sua-senha-aqui
deref = never
scope = subtree
user_attrs = %n,%Dd=user,quota=quota_rule=*:storage=%$,=home=/home/vmail/%d/%n/Maildir
user_filter = (&(objectClass=VirtualMailAccount)(accountActive=TRUE)(mail=%u))
pass_attrs = uid=mail
pass_filter = (&(objectClass=VirtualMailAccount)(accountActive=TRUE)(mail=%u))
default_pass_scheme = MD5
#user_global_uid = 30041
#user_global_gid = 30041
# useradd vmaili
# cd /etc/postfix
# postalias transport
# postalias virtual
# touch /var/log/dovecot-deliver-errors.log
# touch /var/log/dovecot-deliver.log
# chmod o+w /var/log/dovecot-deliver-errors.log
# chmod o+w /var/log/dovecot-deliver.log
# yum install dovecot-ldap
# yum install dovecot-sieve
# mkdir /home/vmail/bin
# vi /home/vmail/bin/quota-warning.sh
#!/bin/bash
PERCENT=$1
cat << EOF | /usr/libexec/dovecot/deliver -d $USER -c /etc/dovecot-nowarning.conf
From: postmaster@zapt.com
Subject: Aviso de Quota
14 of 24 04/18/2011 05:19 PM
Caso de Estudo: E-mail Server ISP [Artigo] http://www.vivaolinux.com.br/artigos/impressora.p...
Sua caixa postal esta $PERCENT% cheia, procure apagar mensagens antigas.
EOF
No arquivo /etc/dovecot-ldap.conf Substitua os valores de DN e Senha para o dovecot ter acesso de leitura em sua base
ldap.
No arquivo /etc/postfix/main.cf Substitua os valores para o postfix ter acesso de leitura em sua base ldap também.
# cp /etc/dovecot.conf /etc/dovecot-nowarning.conf
LDAP_BASE="o=hosting,dc=example,dc=tld"
admin="cn=admin"
SUFFIX="dc=example,dc=tld"
ROOTPW="sua-senha-aqui"
BINDDN="cn=admin,dc=example,dc=tld"
BINDPW="sua-senha-aqui"
Em meu caso, tive que visualizar no phpldapadmin o atributo mailbox de meus usuários e editar/ajustar o script
cleaner.sh manualmente. Veja abaixo meu exemplo:
Você precisa ajustar o valor correto do atributo para o script conseguir apagar os arquivos nos paths corretos, se
precisar edite também o arquivo: /var/www/html/admin/(ou phamm)/plugins/mail.xml. Esse é o arquivo chave que gera
todos os atributos da conta quando criada no ldap.
O phamm apenas marca as contas, esse script que irá rodar a cada hora pelo cron ira efetivamente deletar as contas e
arquivos do disco.
Isso irá ajustar o valor de tamanho de quota default (Inicial) para 500MB de cada usuário novo criado.
Observe que foi também deletado o caractere ( S ) do atributo suffix, e mudado o valor do multiplicador.
<attribute name="quota">
<prettyName>Quota</prettyName>
<table>1</table>
<default>500</default>
<multiplier>1024</multiplier>
<suffix></suffix>
15 of 24 04/18/2011 05:19 PM
Caso de Estudo: E-mail Server ISP [Artigo] http://www.vivaolinux.com.br/artigos/impressora.p...
<minAuthLevel>4</minAuthLevel>
</attribute>
Ajuste também no arquivo mail.xml o diretório default home dos seus usuários corretamente para seu sistema. (Procure
a tag vdHome).
Mailscanner e SpamAssassin
16 of 24 04/18/2011 05:19 PM
Caso de Estudo: E-mail Server ISP [Artigo] http://www.vivaolinux.com.br/artigos/impressora.p...
http://www.mailscanner.info/downloads.html
Descompactar e executar o install.sh para o MailScanner e após realizar o mesmo procedimento para o pacote do
install-Clam-SA.
Baixe o pacote unrar-3.7.8-2.fc9.i386.rpm e instale usando rpm -ivh unrar-3.7.8-2.fc9.i386.rpm (para o Fedora 12
existe outra versão do rar). Use o RPM pbone para encontrar seus pacotes rpm.
Execute:
header_checks = regexp:/etc/postfix/header_checks
Adicione no arquivo /etc/postfix/header_checks a seguinte linha (se você baixou meu arquivo, isso já existe, não faça
duplicado):
/^Received:/ HOLD
envelope_sender_header X-yoursite-MailScanner-From
Execute:
# MailScanner --lint
17 of 24 04/18/2011 05:19 PM
Caso de Estudo: E-mail Server ISP [Artigo] http://www.vivaolinux.com.br/artigos/impressora.p...
Execute em /var/spool/MailScanner/incoming:
# chown -R postfix.postfix *
Execute novamente:
# MailScanner --lint
Observe que não podem haver erros, se observar erros, tente corrigi-los isoladamente.
A atualização das definições de vírus ocorrem automaticamente, observe que da primeira vez que rodar o comando
MailScanner --lint ainda tera definições de vírus antigas, isso deve ser corrigido automaticamente em 24h.
Novamente, é hora de ajustar a hora e data do sistema com o comando date, caso esteja ainda errada.
# /usr/bin/wget -N http://www.peregrinehw.com/downloads/SpamAssassin/contrib/KAM.cf
Instalando o arquivo baixado em: (KAM.cf são rules adicionais, recomendo usar elas.)
# /etc/mail/spamassassin/
Atualizando o SpamAssassin:
# sa-update -D
# cp /usr/local/bin/sa-update /etc/cron.daily/
Instalando o RAZOR:
O Razor transforma um e-mail em um código, uma especie de md5sum, desta forma pode verificar se a mesma
mensagem esta chegando em diversos servidores ao redor do planeta. Um mesmo e-mail chegando a diversos servidores
ao mesmo tempo, certamente é um e-mail de spam de massa circulando pela internet.
http://razor.sourceforge.net/
razor-agents-sdk-2.07.tar.bz2
razor-agents-2.84.tar.bz2
Agora execute:
# razor-admin -create
Note que o razor irá criar sua configuração em /root/.razor Tenha cuidado para não apagar esse diretorio nunca.
18 of 24 04/18/2011 05:19 PM
Caso de Estudo: E-mail Server ISP [Artigo] http://www.vivaolinux.com.br/artigos/impressora.p...
# touch /tmp/spam
# spamassassin -t -D razor2 < /tmp/spam
Instalando o DCC
Efetue o download de:
http://www.rhyolite.com/anti-spam/dcc/
Descompacte e execute:
# ./configure
E após:
# make install
Agora, você precisa rebootar o sistema para ver se a inicialização dos daemons ocorre normalmente, e também verificar
se tudo esta correndo bem até aqui. Envie e receba mensagens locais, teste seu sistema. Observe os logs de /var/mail
/maillog para certificar-se que tudo está funcionando corretamente.
ClamAV Daemon
Instale todos os pacotes, clamav, clamav-server etc.
# cp /usr/share/doc/clamav-server-0.95.3/clamd.conf /etc
# vi /etc/clamd.d/scan.conf
LocalSocket /tmp/clamd.socket
User root
Inicie a daemom:
# chkconfig clamd.scan on
Mailwatch:
19 of 24 04/18/2011 05:19 PM
Caso de Estudo: E-mail Server ISP [Artigo] http://www.vivaolinux.com.br/artigos/impressora.p...
# chkconfig mysqld on
# service mysqld start
# /usr/bin/mysqladmin -u root password 'sua-senha-aqui'
my($db_user) = 'mailwatch';
my($db_pass) = 'mail';
# cp MailWatch.pm /usr/lib/MailScanner/MailScanner/CustomFunctions/
# mysql mailscanner -u mailwatch -p
# INSERT INTO users VALUES ('admin',md5('sua-senha-aqui'),'admin','A','0','0','0','0','0');
# quit
# mv mailscanner /var/www/html
# cd /var/www/html
# chown root:apache images
# chmod ug+rwx images
# chown root:apache images/cache
# chmod ug+rwx images/cache
# cp conf.php.example conf.php
No arquivo conf.php:
# mv /root/mailwatch-1.0.5 /opt/
# echo "/opt/mailwatch-1.0.5/tools/quarantine_maint.php --clean" > /etc/cron.daily/quarantine_maint.sh
# chmod +x /etc/cron.daily/quarantine_maint.sh
#!/usr/bin/php -q
# cp /tools/db_clean.php /etc/cron.daily/
Ajuste o parâmetro Virus Scanner = clamavmodule no arquivo MailScanner.conf (use clamd para quando estiver usando
a versão daemon do clamav conforme você instalou/configurou acima).
20 of 24 04/18/2011 05:19 PM
Caso de Estudo: E-mail Server ISP [Artigo] http://www.vivaolinux.com.br/artigos/impressora.p...
my($db_user) = '<username>';
my($db_pass) = '<password>';
# cp SQLBlackWhiteList.pm /usr/lib/MailScanner/MailScanner/CustomFunctions/
ftp://ftp.horde.org/pub/horde/
Descompacte-o:
# cd /var/www/html
# chown -R apache:apache horde
# cd ./horde/config
# for f in *.dist; do cp $f `basename $f .dist`; done
# cd ../scripts/sql
# vi create.mysql.sql
21 of 24 04/18/2011 05:19 PM
Caso de Estudo: E-mail Server ISP [Artigo] http://www.vivaolinux.com.br/artigos/impressora.p...
http://your-server/horde/
Caso deseje testar sua instalação use a página de testes do horde abaixo:
http://your-server/horde/test.php
Ajustando o PHP:
# vi /etc/php.ini
display_errors = On
file_uploads = On
upload_max_filesize = 5M (or your choice)
memory_limit = 128M or more to be able to send large email attachments
Dentro de /horde:
Crie as databases:
http://your-server/horde/
$servers['_prompt'] = array(
'name' => _("imap")
);
/* Example configurations: */
22 of 24 04/18/2011 05:19 PM
Caso de Estudo: E-mail Server ISP [Artigo] http://www.vivaolinux.com.br/artigos/impressora.p...
$servers['imap'] = array(
'name' => 'IMAP Server',
'server' => 'localhost',
'hordeauth' => false,
'protocol' => 'imap/notls',
'port' => 143,
'maildomain' => 'example.com',
'smtphost' => 'smtp.example.com',
'smtpport' => 25,
'realm' => '',
'preferred' => '',
);
#
# Para não precisar autenticar-se 02 vezes (uma no horde e outra no IMP, leia atentamente abaixo e siga os passos:)
#
# If you would prefer that your users authenticate directly with IMP,
# without having to authenticate through Horde first, load the
# ``Administration/Setup/Authentication`` page and from the ``What backend
# should we use for authenticating users to Horde`` pulldown menu select
# ``Let a Horde application handle authentication``. (Please see the
# second note below.) Select ``imp`` from the ``The application which is
# providing authentication`` pulldown menu.
http://www.onyxbits.de/gnarwl
Descompacte:
Edite o arquivo /etc/postfix/transport adicionando (observe que em meus exemplos já existe essa entrada, não faça
duplicado):
.autoreply gnarwl:
Após:
postalias transport
Edite o arquivo /etc/postfix/master.cf adicionando no final (observe que em meus exemplos já existe essa entrada, não
faça duplicado):
map_sender $sender
map_receiver $recepient
map_subject $subject
23 of 24 04/18/2011 05:19 PM
Caso de Estudo: E-mail Server ISP [Artigo] http://www.vivaolinux.com.br/artigos/impressora.p...
Agora você precisa ajustar corretamente as permissões de alguns arquivos e diretórios conforme abaixo:
/usr/local/etc
-rw------- 1 vmail vmail 848 Ago 19 17:55 gnarwl.cfg
/usr/local/bin
-rwxr-xr-x 1 vmail vmail 24040 Ago 19 16:31 gnarwl
/usr/local/var/lib
drwxr-xr-x 4 vmail vmail 4096 Ago 19 16:31 gnarwl
Dica de teste:
Quando testar, observe que o gnarwl mantem uma database, e somente será enviada uma auto-resposta de férias para
cada solicitação. Por exemplo, se chegarem vários emails de uma mesma origem, somente será enviado apenas 01 email
de auto-resposta para aquele email de origem.
http://www.vivaolinux.com.br/artigo/Caso-de-Estudo-Email-Server-ISP
24 of 24 04/18/2011 05:19 PM