Extendendo o Amavisd New
-
Upload
otavio-fernandes -
Category
Technology
-
view
1.188 -
download
2
description
Transcript of Extendendo o Amavisd New
![Page 1: Extendendo o Amavisd New](https://reader033.fdocumentos.tips/reader033/viewer/2022052900/556276add8b42a04418b49db/html5/thumbnails/1.jpg)
Extendendoo Amavisd-New
YAPC::Brasil 2009, Rio de Janeiro, RJ
Friday, October 30, 2009
![Page 2: Extendendo o Amavisd New](https://reader033.fdocumentos.tips/reader033/viewer/2022052900/556276add8b42a04418b49db/html5/thumbnails/2.jpg)
Quem?
Otávio Fernandes;
[email protected] / [email protected]
http://blog.emresumo.com
Líder, São Paulo Perl Mongers;
Friday, October 30, 2009
![Page 3: Extendendo o Amavisd New](https://reader033.fdocumentos.tips/reader033/viewer/2022052900/556276add8b42a04418b49db/html5/thumbnails/3.jpg)
Minha História com Perl
Final de 2006;
Na época, as minhas principais linguagens eram: C, C++ e Shell Script;
Estava construindo um appliance de Anti-Spam... logo Amavisd-New;
Friday, October 30, 2009
![Page 4: Extendendo o Amavisd New](https://reader033.fdocumentos.tips/reader033/viewer/2022052900/556276add8b42a04418b49db/html5/thumbnails/4.jpg)
Amavisd-New
A necessidade de entender como este software funciona, foi o que me levou a estudar e amar o Perl;
Perl, não existe melhor linguagem para o tratamento de email;
Friday, October 30, 2009
![Page 5: Extendendo o Amavisd New](https://reader033.fdocumentos.tips/reader033/viewer/2022052900/556276add8b42a04418b49db/html5/thumbnails/5.jpg)
O que ele é?
Interface entre o MTA e anti-spam/anti-vírus;
Mail part decoder/unpacker;
Quarentenas (SQL/Local/Forward);
Log e Reporting para o SQL;
Friday, October 30, 2009
![Page 6: Extendendo o Amavisd New](https://reader033.fdocumentos.tips/reader033/viewer/2022052900/556276add8b42a04418b49db/html5/thumbnails/6.jpg)
Quais as vantagens?MUITAS features;
Extensível;
Respeita os padrões (SMTP, MIME, DSN, etc);
Tolerante a falhas:
Verifica o estado de cada operação;
Se houver erro, o email permanece com o MTA;
Friday, October 30, 2009
![Page 7: Extendendo o Amavisd New](https://reader033.fdocumentos.tips/reader033/viewer/2022052900/556276add8b42a04418b49db/html5/thumbnails/7.jpg)
Performance
Não é tão rápido quando se ele fosse escrito em C;
Porem, permite escalar;
Trabalha com daemons (conforme o setup, você usa mais instâncias);
200ms * N;
Friday, October 30, 2009
![Page 8: Extendendo o Amavisd New](https://reader033.fdocumentos.tips/reader033/viewer/2022052900/556276add8b42a04418b49db/html5/thumbnails/8.jpg)
Performance Real:1938 msgs/min
Friday, October 30, 2009
![Page 9: Extendendo o Amavisd New](https://reader033.fdocumentos.tips/reader033/viewer/2022052900/556276add8b42a04418b49db/html5/thumbnails/9.jpg)
Arquitetura do Amavisd / Postfix
Friday, October 30, 2009
![Page 10: Extendendo o Amavisd New](https://reader033.fdocumentos.tips/reader033/viewer/2022052900/556276add8b42a04418b49db/html5/thumbnails/10.jpg)
Afinal, como extender?
Todos os arquivos de configuração são scripts Perl;
include_config_files("/usr/local/etc/amavis_custom.pm") if ( -e "/usr/local/etc/.pm" );
package Amavis::Custom;
Friday, October 30, 2009
![Page 11: Extendendo o Amavisd New](https://reader033.fdocumentos.tips/reader033/viewer/2022052900/556276add8b42a04418b49db/html5/thumbnails/11.jpg)
Métodos
new;
checks;
before_send;
after_send;
mail_done;
Friday, October 30, 2009
![Page 12: Extendendo o Amavisd New](https://reader033.fdocumentos.tips/reader033/viewer/2022052900/556276add8b42a04418b49db/html5/thumbnails/12.jpg)
Exemplo
Friday, October 30, 2009
![Page 13: Extendendo o Amavisd New](https://reader033.fdocumentos.tips/reader033/viewer/2022052900/556276add8b42a04418b49db/html5/thumbnails/13.jpg)
if ($must_exec_action) { do_log( $cll, "CUSTOM: must_exec_action %d", $must_exec_action );
# redirecting to another recipient $r->recip_addr_modified( $mail_rules->{mailRedirectTo} ) if ( $mail_rules->{mailRedirectTo} );
# rejecting mail for sender if ( $mail_rules->{mailReject} =~ /(true|1)/i ) { do_log( $cll, "CUSTOM: reject this mail for '%s'", ( $mail_rules->{description} ) ? $mail_rules->{description} : 'no_description' ); for my $r ( @{ $msginfo->per_recip_data } ) { $r->add_contents_category( CC_BANNED, 0 ) if !$r->bypass_banned_checks; $r->banning_reason_short( ( $mail_rules->{description} ) ? $mail_rules->{description} : 'no_descption' ); $r->banned_parts( ['MAIL'] ); } $msginfo->add_contents_category( CC_BANNED, 0 ); }}
Friday, October 30, 2009
![Page 14: Extendendo o Amavisd New](https://reader033.fdocumentos.tips/reader033/viewer/2022052900/556276add8b42a04418b49db/html5/thumbnails/14.jpg)
Testes?
TDD;
Unit Tests;
Testes de Aceitação com Fixtures;
Friday, October 30, 2009
![Page 15: Extendendo o Amavisd New](https://reader033.fdocumentos.tips/reader033/viewer/2022052900/556276add8b42a04418b49db/html5/thumbnails/15.jpg)
Perguntas?
Friday, October 30, 2009
![Page 16: Extendendo o Amavisd New](https://reader033.fdocumentos.tips/reader033/viewer/2022052900/556276add8b42a04418b49db/html5/thumbnails/16.jpg)
Obrigado :-)
Friday, October 30, 2009