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