Luiz Gustavo disponibilizou em seu wiki e submeteu como contribuição à FUG um excelente e completo tutorial onde explica como instalar e configurar um gateway de correio eletrônico usando o Postfix com Clam-AV, SpamAssassin e Amavisd, e adicionalmente, o Painel de Controle Maia Mailguard. O ótimo artigo de Luiz Gustavo é documentado sob FreeBSD 6.1.
Configurando um Proxy de email utilizando: Postfix, Amavisd, Spamassassin, Razor, Clamav e o Painel de Administração MAIA MailGuard Começando .... O que vamos precisar ! Servidor FreeBSD 6.1 funcionando com internet configurada - Banco de dados (Mysql)
- Servidor WEB (Apache)PHP4
- Anti-virus (clamav)
- Anti-spam (spamassassin)
Instalando o que precisamos .... Preparando e instalando o clamav Preparando e instalando o Spamassassin Preparando e instalando o Postfix http://www.freebsd.org/cgi/url.cgi?ports/mail/postfix22/pkg-descr Instalando os pacotes necessários pkg_add -vr postfix echo 'postfix_enable="YES"' >> /etc/rc.conf
Entre no diretorio de configuração do postfix: cd /usr/local/etc/postfix/
Edite o arquivo master.cf e faça as alterações conforme descrito abaixo: vi master.cf
Substitua a linha: pickup fifo n - n 60 1 pickup
por: pickup fifo n - n 60 1 pickup -o content_filter= -o receive_override_options=no_header_body_checks
Adicione estas linhas no final do arquivo: smtp-amavis unix - - - - 2 smtp -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes -o disable_dns_lookups=yes -o max_use=20
127.0.0.1:10025 inet n - - - - smtpd -o content_filter= -o local_recipient_maps= -o relay_recipient_maps= -o smtpd_restriction_classes= -o smtpd_delay_reject=no -o smtpd_client_restrictions=permit_mynetworks,reject -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o smtpd_data_restrictions=reject_unauth_pipelining -o smtpd_end_of_data_restrictions= -o mynetworks=127.0.0.0/8 -o smtpd_error_sleep_time=0 -o smtpd_soft_error_limit=1001 -o smtpd_hard_error_limit=1000 -o smtpd_client_connection_count_limit=0 -o smtpd_client_connection_rate_limit=0 -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks
Salve o arquivo e saia do vi `:x` Agora vamos configurar o arquivo main.cf Configura os apelidos postconf -e "alias_maps = hash:/etc/aliases" newalias
Substitua “exemplo.com.br” pelo seu dominio postconf -e "myorigin = exemplo.com.br"
Coloque o nome da sua máquina, incluindo o dominio postconf -e "myhostname = proxy.exemplo.com.br"
Configure suas redes válidas (redes interna) postconf -e "mynetworks = 127.0.0.0/8, 222.222.222.222/24, 10.10.10.10/24"
Configure um limite de tamanho de mensagem postconf -e "message_size_limit = 10485760"
Isto faz com que gere um erro se a mensagem for para a maquina local (lembre que estamos configurando um proxy de email, as mensagens serão redirecionadas para um servidor de email válido) postconf -e "local_transport = error:no local mail delivery"
Configura um destino vazio postconf -e "mydestination = "
Configura um mapeamento local vazio para caracterizar que não existem contas locais postconf -e "local_recipient_maps = "
Configura mapeamentos virtuais (apelidos) postconf -e "virtual_alias_maps = hash:/usr/local/etc/postfix/virtual" echo "postmaster
Este endereço de e-mail está sendo protegido de spam, você precisa de Javascript habilitado para vê-lo
" >> virtual echo "abuse
Este endereço de e-mail está sendo protegido de spam, você precisa de Javascript habilitado para vê-lo
" >> virtual postmap /usr/local/etc/postfix/virtual
Configura o relay autorizado a receber as mensagens Altere para o ip do servidor de email postconf -e "relayhost = [666.666.666.666]
Configura os dominios validos para receber email postconf -e "relay_recipient_maps = hash:/usr/local/etc/postfix/relay_recipients" echo "@exemplo.com.br OK" >> /usr/local/etc/postfix/relay_recipients postmap /usr/local/etc/postfix/relay_recipients
Configura os servidores de email que receberão as mensagens (note que aqui você podera utilizar vários servidores para cada dominio, basta especifica-los um por linha) postconf -e "transport_maps = hash:/usr/local/etc/postfix/transport" echo "exemplo.com.br smtp:666.666.666.666" >> /usr/local/etc/postfix/transport postmap /usr/local/etc/postfix/transport
Configura os dominios validos postconf -e "relay_domains = exemplo.com.br"
Configura o delimitador de endereço, aqui você pode optar entre 3 opções Não usar delimitador: postconf -e "recipient_delimiter = "
Usar um sinal de mais como delimitador: postconf -e "recipient_delimiter = +"
Usar um sinal de menos como delimitador: postconf -e "recipient_delimiter = -"
Agora vamos configurar as opções de anti-spam do Postfix, vamos lá ! Aqui obrigamos a usar o helo na conexão SMTP postconf -e "smtpd_helo_required = yes"
Configura restrições na conexão de envio do SMTP postconf -e "smtpd_sender_restrictions = \ check_sender_access hash:/etc/postfix/sender_access, \ reject_non_fqdn_sender, reject_unknown_sender_domain"
Vamos agora configurar o arquivo de acesso ao SMTP (sender_access), seguinte este formato: echo "spammer.com 550 Spam nao e aceito aqui" >> /usr/local/etc/postfix/sender_access echo "exemplo.com.br OK" >> /usr/local/etc/postfix/sender_access echo "
Este endereço de e-mail está sendo protegido de spam, você precisa de Javascript habilitado para vê-lo
OK" >> /usr/local/etc/postfix/sender_access postmap /usr/local/etc/postfix/sender_access
Configura algumas restrições na conexão SMTP, inclusive a IP listados em lista-negra pública postconf -e "smtpd_recipient_restrictions = permit_mynetworks, \ reject_unauth_destination, reject_unauth_pipelining, \ reject_rbl_client relays.ordb.org, \ reject_rbl_client sbl.spamhaus.org, \ reject_rbl_client list.dsbl.org"
Configura restrição nos dados da conexão postconf -e "smtpd_data_restrictions = reject_unauth_pipelining"
Agora configuramos que vai ser nosso scanner (no nosso caso o Amavisd) postconf -e "content_filter = smtp-amavis:127.0.0.1:10024"
Preparando e instalando o Amavisd e o Maia Mailguard http://www.freebsd.org/cgi/url.cgi?ports/security/amavisd-new/pkg-descr http://www.maiamailguard.com/ Baixando os fontes do Maia Mailguard mkdir -p /usr/local/src cd /usr/local/usr wget http://www.maiamailguard.com/files/maia-1.0.1.tar.gz tar zxvf maia-1.0.1.tar.gz
Preparando o ambiente para o amavisd e o Maia Mailguard Instalando Apache e configurando a inicialização pkg_add -vr apache echo 'apache_enable="YES"' >> /etc/rc.conf
Instalando PHP4+componentes e pear+componentes pkg_add -vr php4 cp /usr/local/etc/php.ini-dist /usr/local/etc/php.ini pkg_add -vr php4-session pkg_add -vr php4-gd pkg_add -vr php4-mysql pkg_add -vr php4-ldap pkg_add -vr php4-imap pkg_add -vr php4-mcrypt pkg_add -vr php4-bcmath pkg_add -vr smarty echo 'include_path = ".:/usr/local/share/smarty"' >> /usr/local/etc/php.ini ln -s /usr/local/share/smarty /usr/local/lib/php/Smarty pkg_add -vr pear echo 'include_path = ".:/usr/local/share/pear"' >> /usr/local/etc/php.ini pear channel-update pear.php.net pear install Net_Socket Net_SMTP MDB2 \ Net_IMAP Net_POP3 DB Image_Color-1.0.2 \ Image_Canvas-0.3.0 Image_Graph-0.7.2 \ Numbers_Roman Numbers_Words-0.14.0 \ Auth_SASL-1.0.1 Net_IMAP Net_POP3 \ Mail_Mime Log DB_Pager Pager
Instalando algumas dependencias em Perl pkg_add -vr p5-Template-Extract pkg_add -vr p5-Crypt-Blowfish pkg_add -vr p5-Crypt-CBC pkg_add -vr p5-Crypt-OpenSSL-RSA pkg_add -vr p5-Data-UUID pkg_add -vr p5-DBD-mysql41 pkg_add -vr p5-IP-Country pkg_add -vr p5-Mail-DomainKeys pkg_add -fvr \ ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-6-stable/All/p5-MIME-Tools-5.420,2.tbz pkg_add -vr \ ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-6-stable/All/p5-Digest-1.15.tbz pkg_add -vr \ ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-6-stable/All/p5-libwww-5.805.tbz
Instalando e configurando o Mysql pkg_add -vr ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-6-stable/All/mysql-server-4.1.20.tbz echo 'mysql_enable="YES"' >> /etc/rc.conf /usr/local/etc/rc.d/mysql-server start # Defina uma senha de root para o mysql mysqladmin -u root password SENHAROOT Configurando a base de dados do Maia no mysql mysql -u root -p Enter password:SENHAROOT # Crie uma base com nome maia CREATE DATABASE maia; USE maia; # Popule o sql do maia no banco SOURCE /usr/local/src/maia-1.0.1/maia-mysql.sql; # Crie um usuario e senha para o maia no mysql GRANT CREATE, DROP, ALTER, SELECT, INSERT, UPDATE, DELETE ON maia.* TO amavis@localhost IDENTIFIED BY 'SENHAMAIA'; FLUSH PRIVILEGES;
Instalando e configurando o amavisd pkg_add -vr amavisd-new pw group add -n amavis pw user add -s /bin/sh -d /var/lib/amavis -w no -n amavis mkdir -p /var/lib/amavis mkdir /var/lib/amavis/tmp mkdir /var/lib/amavis/db chown amavis:amavis /var/lib/amavis echo 'amavisd_enable="YES"' >> /etc/rc.conf copie o diretorio de scripts do Maia Mailguard mkdir -p /var/lib/amavis/maia/scripts cd /var/lib/amavis/maia/scripts/ cp /usr/local/src/maia-1.0.1/scripts/* . cp load-sa-rules.pl 1 cp process-quarantine.pl 2 cp send-quarantine-digests.pl 3 sed 's/var\/amavisd/var\/lib\/amavis/g' 1 > load-sa-rules.pl sed 's/var\/amavisd/var\/lib\/amavis/g' 2 > process-quarantine.pl sed 's/var\/amavisd/var\/lib\/amavis/g' 3 > send-quarantine-digests.pl Copie os arquivos PHP do Maia para o apache mkdir /usr/local/www/data/mail cp -r /usr/local/src/maia-1.0.1/php/* /usr/local/www/data/mail/ cp /usr/local/www/data/mail/config.php.dist /tmp/config.php.tmp sed 's/\/\/ $smarty_path = "\/usr\/share\/php\/smarty\/libs";/$smarty_path \ = "\/usr\/local\/share\/smarty";/g' /tmp/config.php.tmp > \ /usr/local/www/data/mail/config.php cp /usr/local/www/data/mail/config.php.dist /usr/local/www/data/mail/config.php chown www:amavis /usr/local/www/data/mail/themes/*/compiled chmod 775 /usr/local/www/data/mail/themes/*/compiled Copie os arquivos de configuração do amavisd e do Maia cp /usr/local/src/maia-1.0.1/amavisd.conf.dist /tmp/amavisd.conf.tmp sed 's/var\/amavisd/var\/lib\/amavis/g' /tmp/amavisd.conf.tmp > \ /usr/local/etc/amavisd.conf cp /usr/local/src/maia-1.0.1/maia.conf.dist /tmp/maia.conf.tmp sed 's/\/var\/amavisd\//\/var\/lib\/amavis\//g' /tmp/maia.conf.tmp > \ /usr/local/etc/maia.conf ln -s /usr/local/etc/maia.conf /etc/maia.conf ln -s /usr/local/etc/amavisd.conf /etc/amavisd.conf Altere o arquivo de configuração do amavisd de acordo com suas necessidades: vi /usr/local/etc/amavisd.conf Altere a seguinte linha de acordo com seu dominio: $mydomain = 'yourdomain.tld'; # a convenient default for other settings
Descomente a seguinte linha: # @mynetworks = qw( 127.0.0.0/8 );
Altere a seguinte linha de acordo com as configurações de acesso ao mysql: @lookup_sql_dsn = ( ['DBI:mysql:maia:localhost', 'amavis', 'password'] );
Configure o nome da sua maquina com o dominio completo na seguinte linha: $myhostname = 'host.domain.tld'; # must be a fully-qualified domain name!
Configure agora o arquivo do Maia vi /usr/local/etc/maia.conf
Altere a linha abaixo de acordo com as configurações de acesso ao mysql: # Configure your Maia database DSN here $dsn = "DBI:mysql:maia:localhost:3306";
# Your Maia database user's login name $username = "amavis";
# Your Maia database user's password $password = "SENHAMAIA";
Configure a linha abaixo de acordo com o nome da sua maquina. $base_url = "http://NOME_DA_MAQUINA.dominio.com.br/";
Altere o arquivo de configuração do site: vi /usr/local/www/data/mail/config.php
Procure pela linha $maia_sql_dsn = "mysql://amavis:passwd@tcp(localhost:3306)/maia";
e altere para os dados de acesso ao banco que você configurou. Agora vá até a linha 210 e escolha uma forma de autenticar seus usuarios e configure conforme os exemplos mostrados no arquivo. // Select an authentication method from one of the following: // // "pop3" - use a POP3 server to authenticate // "imap" - use an IMAP server to authenticate // "ldap" - use an LDAP server to authenticate // "exchange" - use an Exchange Server to authenticate // "sql" - use a SQL database server to authenticate // "internal" - use Maia's internal SQL database to authenticate Copie os templates do Maia cp -r /usr/local/src/maia-1.0.1/templates /var/lib/amavis/maia/ Agora é hora de executar um teste para verificar as dependencias e configuração do Maia Mailguard, faça o seguinte: cd /var/lib/amavis/maia/scripts/ ./configtest.pl A saida do seu comando deve ser igual à essa: MAIA MAILGUARD CONFIGURATION TEST
This script checks for the presence of applications and Perl modules required by amavisd-maia, SpamAssassin, and Maia Mailguard's maintenance scripts. Version numbers are also checked, and if a newer version of a component is recommended, you should consider upgrading to at least the minimum recommended version.
If you have already configured your Maia Mailguard database, the script will also test the connection to that database.
Remember also to run the configtest.php script on your web server to perform similar tests of your web, PHP, and PEAR environment.
Application/Module Version Status ======================================================================== Perl : 5.8.8 : OK file(1) : 4.12 : OK Archive::Tar : 1.28 : OK Archive::Zip : 1.16 : OK BerkeleyDB : 0.27 : OK Compress::Zlib : 1.41 : OK Convert::TNEF : 0.17 : OK Convert::UUlib : 1.06 : OK Crypt::Blowfish : 2.10 : OK Crypt::CBC : 2.17 : OK Crypt::OpenSSL::RSA : 0.22 : OK Data::UUID : 0.11 : OK DB_File : 1.814 : OK DBD::mysql : 3.0002 : OK DBD::Pg : N/A : NOT INSTALLED (required if you use PostgreSQL as your Maia Mailguard database) DBI : 1.50 : OK Digest::MD5 : 2.36 : OK Digest::SHA1 : 2.11 : OK File::Spec : 3.16 : OK HTML::Parser : 3.50 : OK HTTP::Date : 1.47 : OK IO::Stringy : 2.110 : OK IO::Zlib : 1.04 : OK IP::Country : 2.20 : OK LWP::UserAgent : 2.033 : OK Mail::Address : 1.74 : OK Mail::DomainKeys : 0.80 : OK Mail::Internet : 1.74 : OK Mail::SpamAssassin : 3.1.0 : OK Mail::SPF::Query : 1.997 : OK MIME::Base64 : 3.07 : OK MIME::Parser : 5.420 : OK MIME::QuotedPrint : 3.07 : OK Net::CIDR::Lite : 0.19 : OK Net::DNS : 0.56 : OK Net::Server : 0.93 : OK Net::SMTP : 2.29 : OK Pod::Usage : 1.33 : OK Template : 2.14 : OK Time::HiRes : 1.87 : OK Unix::Syslog : 0.100 : OK URI : 1.35 : OK
Database DSN test : PASSED
Se tiver alguma coisa diferente dessa saida, volte e revise as configurações. Agora vamos testar a parte WEB, primeiro, iniciamos o apache /usr/local/etc/rc.d/apache start
Agora abra no seu navegador o seguinte endereço (de acordo com suas configurações) http://NOME_DA_MAQUINA.dominio.com.br/mail/admin/configtest.php
Observação: Ignore o erro no teste de configuração do Smarty, verifique se ficou faltando alguma dependencia, se sim, revise a instalação dos pacotes. Se tudo der certo, é hora de jogar as regras do spamassassin para o banco: ./load-sa-rules.pl
Crie os arquivos de configuração do spamassassin no usuário do amavis su amavis -c 'spamassassin --lint' Neste momento vamos copiar o executavel do amavisd na versão do Maia Mailguard # Fazemos um backup da versão atual mv /usr/local/sbin/amavisd /usr/local/sbin/amavisd-bkp # Copiamos agora a versão do Maia cp /usr/local/src/maia-1.0.1/amavisd-maia /usr/local/sbin/amavisd Iniciando os processos e verificando a instalação Antes de iniciar-mos os processos, vamos debugar o funcionamento do amavisd amavisd debug
Aguarde por pelos menos 10 segundos a leitura das dependencias e configurações e observe se ele apresenta alguma mensagem de erro, se apresentar, volte e revise a instalação/configuração do amavis & maia, se não conter erros, cancele o debug com CRTL+C Iniciando os daemons ... /usr/local/etc/rc.d/amavisd start /usr/local/etc/rc.d/postfix start Para acessar o painel de administração do maia, basta entrar com a URL abaixo: http://IP_DA_SUA_MAQUINA.dominio.com.br/mail
e digitar uma conta de usuário valida com a senha do mesmo que o sistema vai validar no seu servidor de email e cadastrar no Maia. Pronto ! agora você tem um Proxy completo com um painel de administração de Anti-spam e Anti-virus. Abraços Luiz Gustavo (
Este endereço de e-mail está sendo protegido de spam, você precisa de Javascript habilitado para vê-lo
) |