|
|
||
|
Submitted by Eri on Wed, 2005-09-14 22:52.
IntroduçãoO Postfix é um excelente MTA. com uma ampla base instalada e com fácil instalação e manutenção. Dentre suas características, podemos destacar a alta modularidade, capacidade de interagir com diversas bases de dados, como mysql e ldap e o uso nativo de regular expressions, sendo que iremos explorar mais a fudo essa última funcionalidade. Sobre o autorEri Ramos Bastos trabalha com Linux desde 1998, passando por diversas Pré-requisitosNão é objetivo desse mini-tutorial ensinar como instalar e configurar o Postfix, como também não é introduzir o leitor ao uso de expressões regulares. Chamaremos, a partir de agora, as regular expressions (expressões regulares), apenas de regex.
FiltrosComo filtros podemos definir qualquer regra ou política que restrinja de alguma forma quais e-mails iremos receber ou descartar. O uso de filtros pode ser de extrema valia no combate a spams e outros tipos de mensagens indesejadas, como iremos analisar um pouco a diante. Bloqueando VírusVírus são o tipo mais comum de mensagem indesejada. Felizmente eles têm uma característica de fácil identificação em sua grande maioria: arquivos anexos. Para identificar e bloquear arquivos que podem ser perigosos, incluiremos a seguinte linha no main.cf: mime_header_checks = regexp:/etc/postfix/mime_checks
abc \ d
abcd # This filter works on MIME headers in postfix. # It deletes (discards) all mails with attachments that are executable, or known # to contain virus. Especially it deletes all mails with a .zip attachment. # Use it by installing it in a file /etc/postfix/mime_header_checks.regexp # and add a line in /etc/postfix/main.cf (without the beginning '#'): # mime_header_checks = regexp:/etc/postfix/mime_header_checks.regexp # And then restart postfix with 'service postfix restart' # # Keld Simonsen keld@dkuug.dk 2004-01-31 # Pequenas modificações por Eri Ramos Bastos - www.linuxman.pro.br/postfix # /^\s*Content-(Disposition|Type).*name\s*=\s*"?(.+\.(lnk|asd|hlp|ocx|reg|bat|c(pl|hm|om|md) \ |exe|dll|vxd|pif|scr|hta|jse?|sh[mbs]|vb[esx]|ws[fh]|xl))"?\s*$/ \ DISCARD Attachment type not allowed - possible virus. File "$2" has the unacceped extension "$3" /^\s*Content-(Disposition|Type).*name\s*=\s*"?(.+\.(zip))"?\s*$/ \ REJECT Attachment type not allowed - possible virus. File "
Bloqueando aviso de vírusNão sei o que alguns administradores de sistemas tem na cabeça para deixar habilitada aquela opção de "Enviar aviso ao remetente" em caso de vírus encontrado. Hoje em dia quase 100% dos vírus forjam o e-mail de origem, de forma que não faz o MENOR sentido utilizar esse tipo de recurso. E pior: ainda cria um segundo flood. Imagine isso: para cada e-mail com vírus recebido o servidor envia um aviso. O dobro de banda e recursos está sendo usado.
header_checks = regexp:/etc/postfix/header_checks
#Bloqueio de mensagens falsas de virus # Eri Ramos Bastos - www.linuxman.pro.br/postfix # /([Vv].rus(es)?|V.RUS).*(ALERT|alert|S(EU|UA)|YOUR|en(viado|contrado)|found|detect(ado|ed)|blo(cked|queado) \ |[Rr]emetente|sent)/ REJECT Bogus anti-virus alert - please config your mail server properly /[Rr]eturn(ado|ed) d(evido|ue) (a|to) [Vv].rus/ REJECT Bogus anti-virus alert - please config your mail server properly /[dD]etect[ea]do? [Vv].rus(es)?/ REJECT Bogus anti-virus alert - please config your mail server properly Usando RBLsReal-Time Blackhole Lists (Listas para bloqueio em tempo real) são úteis, mas devem ser utilizadas com cuidado. Diversas listas podem ser encontradas pela internet, mas é preciso verificar a seriedade de cada uma delas.
smtpd_recipient_restrictions = reject_rbl_client relays.ordb.org, reject_rbl_client bl.spamcop.net Criando excessões a RBLsEm alguns casos temos que aceitar e-mails de IPs listados nas RBLs. Mas como fazer isso?
check_client_access hash:/etc/postfix/rbl_exceptions
dominio.com.br OK Bloqueando Domínios inexistentesNão é raro receber e-mails de domínios como nonreply, asldkj.hotmail.com e outros que não existem. Para isso podemos fazer com que nosso Postfix receba e-mails apenas de domínios existentes.
smtpd_sender_restrictions = reject_non_fqdn_sender, reject_unknown_sender_domain Bloqueando HELO/EHLO forjadoNão é raro que os spammers utilizem o nome do nosso servidor, nosso domínio, ou até mesmo o IP do nosso servidor de e-mail na hora de enviar um HELO. Utilizando algumas restrições do Postfix, bem como regex, isso é a mesma coisa que receber um e-mail com uma flag indicando que é spam. Vamos cortar o mal pela raiz:
smtpd_helo_required = yes smtpd_helo_restrictions = permit_mynetworks, reject_non_fqdn_hostname, check_helo_access regexp:/etc/postfix/helo-invalid
/(mailserver\.)?dominio\.com\.br/ REJECT You are not me /200\.200\.200\.200/ REJECT You are not me Bloqueando redes indesejáveisSe você monitorar seus logs de e-mail, irá perceber que mais de 90% do spam nacional vem de redes como xDSLs da Telefônica e Telemar, conexões a cabo como virtua ou mesmo conexões dial-up. Já temos o padrão. Agora é só escrever as regras:
smtpd_client_restrictions = permit_mynetworks, check_client_access regexp:/etc/postfix/ip-access-exceptions
/dsl\.telesp\.net\.br/ REJECT Sorry, no xDSL here /speedy(terra|uol)\.com\.br/ REJECT Sorry, no xDSL here /dial-?(up|uol)/ REJECT Sorry, no Dial-up here /virtua\.com\.br/ REJECT Sorry, no xDSL here /veloxzone\.com\.br/ REJECT Sorry, no xDSL here
ConclusõesComo demonstrado rapidamente, o Postfix tem uma enorme capacidade de vericações e filtros. Utilize sua imaginação e seus conhecimentos em regex e, com certeza, poderá fazer filtros muito interessantes. ReferênciasKeld Simonsen
| ||