Konfiguracja Postfixa
Transkrypt
Konfiguracja Postfixa
Konfiguracja Postfixa Ogólne spojrzenie na domeny wirtualne, współpracę z MySQL i filtrowanie. Zbigniew Jarosik [email protected] 2004-05-08 Sopot VIII spotkanie TLUG-u. Kilka słów ● ● ● ● ● Współpraca z MySQL Domeny wirtualne Filtrowanie Transporty Quota Z życia wzięte .:: .!+++! !JQMQM*. :!JQMQMQMJ! .*+MQJJ+MMQM* !JMQM!..!JMQM*: :JMQM! :*MQMJ*. ... *MMQ+: .!JMQM*. :+JJ*. .!JMQM! !JMQJ+! :JMMM*! :*MQM+. :!+JMJ*.:*JMQM+. !+QMJ*. .*JMJ*..!JMQM+: !+MQ+! .!+MJ!. !JMMM*: !*QM*: :+MJ+. !+MQJ*. :*MQ+! .!JMJ! .:JMQJ! !*QM*! .*MM+: .*MMQ+: .*+MM!: :+MJ* :+QMM!. !+QJ*: !+M*. .:JJQ+: !+MJ*: :*M+. !*MJ!. !+MM*: :!+! .:+Q*! :!+*: ..:!:!::: ..:: *M+*. .:!!*: .!*JMMMQQMMJ+*!!: .::. .:!*+MMQM+:. :*JMQMQMJ+++*+JJJJMMJ+*:. ..::!+JMMMQMMJJ+*:. .*JQMQM+*:. ..::!!*+JJMJ+***!**+++JJMMMQMQQJ++*:.. :JMMJ+! ..::*++JJMMQMMJJMMQMMJ++!: .... .... .... Postfix MySQL ● ● ● Zastąpienie map dostępnych w plikach Elastyczność Łatwość zarządzania – – – Interfejs przez WWW Replikacja konfiguracji Instant ;D Postfix MySQL - 1 Tabelki: DOMAINS: domena, active, transport ALIASES: virtual, target USERS: id, vuid, vgid, login, maildir, quota, pass_smtp, pass_imap, home, imie, nazwisko, data_utworzenia, data_waznosci, telefon DOMAINS: sails.pl, 1, virtual: ALIASES: [email protected], [email protected] [email protected], [email protected] [email protected], [email protected] USERS: 17, 1111, 1111, [email protected], nora.pl/zibi/, 0, ****, ****, /var/spool/virtual/, Zbigniew, Jarosik, 2002-03-03, NULL, +48503134486 Postfix MySQL - 2 main.cf: mydestination = mysql:/etc/postfix/mysql/domains domains: user=dbuser password=dbpass dbname=baza_postfixa table=domains select_field=domena where_field=domena hosts=bdhost additional_conditions = and active = '1' # select forw_addr from mxaliases # where alias = '$lookup' and active = '1' Domeny wirtualne ● ● Obsługa wielu domen na jednym serwerze Oddzielenie skrzynek od kont Domeny wirtualne - 1 mydestination = mysql:/etc/postfix/mysql/domains mailbox_transport = virtual local_recipient_maps=mysql:/etc/postfix/mysql/virtual transport_maps = mysql:/etc/postfix/mysql/transport virtual_maps=mysql:/etc/postfix/mysql/aliases virtual_mailbox_base=/var/spool/virtual/ virtual_mailbox_maps=mysql:/etc/postfix/mysql/virtual virtual_mailbox_limit_maps = static:0 virtual_uid_maps = static:1059 virtual_gid_maps = static:1059 Filtrowanie ● ● Ochrona antyspamowa i antywirusowa Różne etapy: – – – Tzw before-queue (jeszcze w trakcie sesji smtp) Tzw after-queue (już wewnątrz systemu) Transport (przy dostarczaniu użytkownikowi) Filtrowanie ● Zalety: – Before-queue ● ● – After-queue ● – Pozwala na odrzucenie maila we wczesnej fazie Idealna dla filtra odrzucającego mass-spam Wykonywana w późniejszym czasie – można jej poświęcic więcej “uwagi” Transport ● ● Może być łatwo dostosowana do potrzeb poszczególnych domen Łatwość kolejkowania filtrów Filtrowanie ● Wady – Before-queue ● – After-queue ● ● – Może znacząco wydłużyć czas oczekiwania na dostępność sesji smtp Mail już jest w systemie Problem z kolejkowaniem filtrów Transport ● Mail już jest w systemie Filtrowanie - after-queue Podpięcie np. Amavis-a main.cf: ● # amavis content_filter = smtp-amavis:[127.0.0.1]:10024 master.cf: 127.0.0.1:10025 inet n y - 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 smtpd_recipient_restrictions=permit_mynetworks,reject -o mynetworks=127.0.0.0/8 -o strict_rfc821_envelopes=yes Filtrowanie - Transporty ● ● ● ● Elastyczność w obsłudze poczty dla poszczególnych domen Tworzenie niestandardowych mechanizmów obsługi poczty Obróbka poczty (doklejanie stopek, wycinanie wulgaryzmów) Łatwość tworzenia Prymitywna quota SPAMC="bsfilter --homedir /home/virtual/.bsfilter/ -a --pipe --insert-flag --insert-probability –asynchronous-autoupdate" query=`mysql -u maildirquota -D system -E -B -e "select quota,maildir from users where login='$RECIPIENT';" | grep -v '\*'` quota=`echo $query | cut -f2 -d' '` maildir=`echo $query | cut -f4 -d' '` disk_usage=`du -s /home/virtual/mail/$maildir | cut -f1` if [ $quota -ne 0 ]; then if [ $disk_usage -ge $quota ]; then echo "QUOTA LIMIT EXCEEDED!!! limit=$quota, usage=$disk_usage "; exit $EX_UNAVAILABLE; fi fi ($SPAMC | procmail HOME="/home/virtual/mail/$maildir") || { echo Message content rejected; exit $EX_UNAVAILABLE; } Podsumowanie ● ● ● ● Elastyczność Prostota Nieduże wymagania Łatwość rozbudowy