\documentclass[20pt,dvips]{foils}
\usepackage[latin1]{inputenc}
\usepackage{lgrind}
\usepackage{url}
\title{Lysators mailserver - en halv UppLYSning}
\author{Erik Forsberg\\
	\texttt{forsberg@lysator.liu.se}\\
	\url{http://www.lysator.liu.se/~forsberg}}
\date{2000-11-07}
\leftheader{Erik Forsberg}
\rightheader{UppLYSning 001107}
\MyLogo{Lysator Academic Computer Society}

\begin{document}
\maketitle

\foilhead{Innehåll}
\begin{itemize}
\item Hård- och mjukvara
\item Postfix, konfiguration etc..
\item Koppling mot databas
\item Spamskydd
\item Mailman
\item Mailconf
\end{itemize}

\foilhead{Hårdvara}
\begin{itemize}
\item SGI Origin 2000 - Tack SGI!
\item 2x180 MHz R10k
\item 256 Mb minne
\item 2x18 Gb SCSI disk
\item 100Mbit Ethernet, två switchar från SUNET :-)
\item ``Superdator''!
\end{itemize}

\foilhead{Mjukvara}
\begin{description}
\item[MTA] Postfix (snapshot + egen IRIX-patch) 
\item[IMAP4] UW imapd + egen SQL-patch. 
\item[POP3]  UW pop3d + egen SQL-patch.
\item[SQL-server]  MySQL.
\item[HTTP]  Apache med SSL.
\item[Glue]  Python.
\end{description}


\foilhead{Postfix}
\noindent \url{http://www.postfix.org}

\noindent Hette från början VMailer ({\bf V}ietse {\bf M}ailer) men fick döpas
om till Postfix pga namnrättighetsstrul.

\noindent Skriven av Wietse Venema \newline(\url{http://www.porcupine.org}, {\tt 
wietse@porcupine.org}), holländare och datasäkerhetsforskare. Numera vid
IBM Thomas J. Watson Research Center, USA. Wietse är även känd för
{\bf SATAN} och TCPWrapper.

\noindent Första raden i HISTORY-filen är från 1998-10-05.

\foilhead{Postfix: Mål}

\begin{itemize}
\item Kompabilitet - Det ska inte vara en pina där bak att ersätta
Sendmail med Postfix. Visar sig bland annat i enkel konfiguration.
\item Fart - Postfix går FORT! 3 gånger så fort som Qmail?
\item Robusthet - Det har tänkts till vad gäller resurser och det ska
vara svårt att förlora mail. 
\item Flexibilitet - Arkitekturen är byggd på många små program som
gör {\bf EN} sak bra i stället för ett stort program som gör många
saker. Helt i enlighet med unix-tänkandet.
\item Säkerhet - Wietse är expert på datorsäkerhet, och systemet är redan
från början genomtänkt vad gäller säkerheten.
\end{itemize}

\foilhead{Postfix: Konfiguration}
\noindent Postfix är enkelt att konfigurera. En helt vanlig host som bara ska
skicka och ta emot mail behöver bara ändra ett par olika
parametrar då de flesta värdena har defaultvärden som är vettiga.

\noindent Det finns 190 olika
konfigurationsparametrar. Generellt är de på formen {\it parameter =
värde} vilket är lätt att läsa till skillnad 
från Sendmails konfiguration.

\noindent Det finns alltid med ett exempel på hur man kan använda parametern i
form av exempelkonfigurationsfiler. 

\noindent Postfix har inget eget omskrivningsspråk, utan använder i stället
uteslutande tabeller. Dessa kan vara av många slag - reguljära
uttryck, MySQL, LDAP, dbm, db, etc\ldots

\foilhead{Postfix: Konfiguration, enkelt exempel}

\begin{tiny}
\begin{verbatim}
$ postconf -n  % $
alias_database = hash:/etc/postfix/aliases 
alias_maps = hash:/etc/postfix/aliases 
command_directory = /usr/sbin 
daemon_directory = /usr/libexec/postfix 
debug_peer_level = 2 
default_destination_concurrency_limit = 10 
delay_warning_time = 4 
local_destination_concurrency_limit = 2 
mail_owner = postfix 
mydestination = $myhostname, $mydomain, sofie.lambo.student.liu.se 
mydomain = a88.lambo.student.liu.se 
myhostname = a88.lambo.student.liu.se 
queue_directory = /var/spool/postfix 
\end{verbatim}
\end{tiny}

\noindent (postconf -n listar de parametrar som skiljer sig från default)

\foilhead{Postfix: Lysators konfiguration}

\begin{tiny}
\begin{verbatim}
alias_database = dbm:/etc/aliases
alias_maps = dbm:/etc/aliases dbm:/var/list/smartlist.aliases 
dbm:/etc/postfix/stensson-alias

allow_mail_to_commands = alias,forward,include
allow_mail_to_files = alias,forward,include
bounce_size_limit = 51200000
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
debug_peer_level = 2
default_destination_concurrency_limit = 10
default_privs = nobody
fast_flush_domains = $relay_domains ryd.student.liu.se
lambo.student.liu.se vv.student.liu.se ib.student.liu.se 

inet_interfaces = all
local_destination_concurrency_limit = 2
mail_owner = postfix
mail_spool_directory = /export/dsk2/mailspool
maps_rbl_domains = rbl.maps.vix.com,dul.maps.vix.com,relays.mail-abuse.org
masquerade_domains = lists.lysator.liu.se $mydomain
masquerade_exceptions = root
message_size_limit = 51200000
mydestination = $myhostname, localhost.$mydomain, venom, $mydomain,
mail.lysator.liu.se, mailhost.lysator.liu.se 

myhostname = mail.lysator.liu.se
myorigin = $mydomain
notify_classes = resource,software,delay,protocol,2bounce
queue_directory = /export/dsk2/mailqueue
recipient_canonical_maps = dbm:/etc/postfix/canonical.recipient
recipient_delimiter = +
\end{verbatim}
\end{tiny}


\foilhead{Postfix: Lysators konfiguration, forts.}

\begin{tiny}
\begin{verbatim}
relocated_maps = dbm:/etc/postfix/relocated
sender_canonical_maps = dbm:/etc/postfix/canonical.sender
smtp_bind_address = 130.236.254.3
smtpd_client_restrictions = check_recipient_access
mysql:/etc/postfix/spamfriends.sql, reject_maps_rbl,permit 

smtpd_recipient_restrictions = permit_mx_backup,
check_recipient_access dbm:/etc/postfix/recipient_table,permit_mynetworks,
reject_unauth_destination

smtpd_sender_restrictions = check_recipient_access
mysql:/etc/postfix/spamfriends.sql, check_sender_access
dbm:/etc/postfix/sender_domain, reject_unknown_sender_domain, permit 

transport_maps = dbm:/etc/postfix/transport
virtual_maps = pcre:/etc/postfix/virtual.pcre
\end{verbatim}
\end{tiny}

\noindent \begin{Large}Kommentarer\end{Large}

\begin{tiny}
\begin{verbatim}
# Rejektera användare och domäner som finns i disallowed_users, ex.vis 
# användare som inte har betalt medlemsavgiften. Här skapas även 
# felmeddelandet om rydnethosts. forsberg 20000422 (tentap! :)  )
\end{verbatim}
\end{tiny}




\foilhead{Postfix: regexp och MySQL-tabeller}

\noindent \begin{large}Regexp-tabeller\end{large}

\begin{tiny}
\begin{verbatim}
virtual_maps = pcre:/etc/postfix/virtual.pcre
\end{verbatim}
\end{tiny}

\begin{tiny}
\begin{verbatim}
/^(.*)-request@lists.lysator.liu.se$/   $1+mailcmd@virtual-list
/^(.*)-admin@lists.lysator.liu.se$/     $1+mailowner@virtual-list
/^(.*)-owner@lists.lysator.liu.se$/     $1+mailowner@virtual-list
/^(.*)@lists.lysator.liu.se$/           $1+post@virtual-list
\end{verbatim}
\end{tiny}


\noindent \begin{large}MySQL-tabeller\end{large}

\begin{tiny}
\begin{verbatim}
mysql:/etc/postfix/spamfriends.sql
\end{verbatim}
\end{tiny}

\begin{tiny}
\begin{verbatim}
user = <user>
password = <password>
dbname = <dbname>

table = members
select_field = "OK"
where_field = CONCAT(login, "@lysator.liu.se")

\end{verbatim}
\end{tiny}

\begin{tiny}
\begin{verbatim}
SELECT ``OK'' from where CONCAT(login, ``@lysator.liu.se'') = <värde>;
\end{verbatim}
\end{tiny}

\foilhead{Varför koppla till MySQL?}
\begin{description}
\item[+] Enkelt att programmera mot.
\item[+] All data på ett ställe.
\item[+] Inga fillåsningsproblem.
\item[+] Konsistent backup.
\item[+] Snabb uppdatering.
\item[--] Performance - Inget problem idag.
\end{description}

\foilhead{Spamskydd}
\noindent Postfix har bra stöd för att på olika sätt filtrera bort
spam (UCE). Från dokumentationen:

\begin{small}
\begin{itemize}
\item Header filtering 
\item Client hostname/address restrictions 
\item Require HELO (EHLO) command 
\item HELO (EHLO) hostname restrictions 
\item Require strict RFC 821-style envelope addresses 
\item Sender address restrictions 
\item Recipient address restrictions 
\end{itemize}
\end{small}

\noindent Lysators server använder tre DNS-baserade tabeller (RBL, DUL
och RSS) för filtrering baserat på avsändarip samt kontrollerar om
avsändardomänen existerar i DNS.  \url{http://www.mail-abuse.org}

\noindent Varje enskild medlem kan slå på och av spamfiltreringen via
Mailconf. Postfix kontrollerar i MySQL-tabell om en viss medlem vill
ha spamskydd eller inte.

\foilhead{Mailman}
\url{http://www.list.org}
\begin{itemize}
\item Skriven i Python - integrerar bra i resten av systemet.
\item Webbaserad administration.
\item Integrerad webarkivering.
\item Möjlighet till modererade listor - dock bara via webben (än så
länge).
\item Avlastar mailservern - leverans till Mailman går fort - ett
cronjobb körs sedan en gång i minuten för att leverera brev.
\end{itemize}

\foilhead{Mailconf}
\noindent Konfigurationssystem för medlemmen med möjlighet att 

\begin{itemize}
\item Sätta maillösenord
\item Stänga av eller på spamfilter
\item Skapa mailinglistor i Mailman
\end{itemize}
\noindent Nås med webbrowser på \newline \url{https://mailconf.lysator.liu.se}\newline
\noindent Samma kodbas som Lysators medlemsregister\newline
\noindent Avlastar Lysators rötter.

\end{document}

