Postfix setup
Jeg er gået over til Google, og dette er derfor aldeles pensioneret!
Search engine update
I’ve noticed some hits from search engines regarding “
postfix php script
” and who am I to mislead these people?
I’ve actually used some time doing postfix setup. My research shows that it hardly is the timeworth to do your own scripting. Postfixadmin can do the job perfectly.
I’ve actually also seen some setups with postfix -> qmail -> vpopmail for more customer selfcare. Quite ok.
Don’t use my guide here; try some of these maybe?
- http://www.howtoforge.com/virtual_users_postfix_courier_mailscanner_clamav_centos
- http://switch.richard5.net/isp-in-a-box-v2/installing-and-configuring-postfixadmin/
- http://es-web.dk/howto/?Side_ID=5 [danish]
Gammel guide – outdated
Nu har jeg efterhånden brugt nogle år på at få postfix til at makke ret. Diverse løsninger er opstået og jeg har brugt en del tid på at formidle det indimellem til de få rå der har gidet at høre om det.
Det har resulteret i noget (mere eller mindre outdatet) kode som jeg har liggende her på seet.dk.Hele “konceptet” er virtuelle postdomæner, med de nødvendige oplysninger gemt i en sql-database med et rimeligt skema. Det har krævet en del krumspring at får “normaliseret” den simple måde at lave postfix-courier-imap-mysql setup på over til et rimeligt database-skema.Først resulterede det i nogle halvlanghårdede sqls for at lave joins osv. over de rigtige tabeller, men med mit begrænsede kendskab til sql og mysqls evner gjorde at jeg frygtede det slet ikke skalerede med så slemme sql’s.
select concat(userdata.username,\"mapdir\",\"@\",domains.domain), concat(domains.domain,\"/\", userdata.username,\"/Maildir/\"), concat(userdata.username,\"mapdir\",\"@\",domains.domain), domains.uid, domains.gid, \"dir\" from userdata, domains where userdata.domain = domains.id and userdata.mapping in ('dir+remote')SELECT userdata.username, userdata.password, domains.uid, domains.gid, concat('/usr/mailboxes/',domains.domain,'/',userdata.username,'/Maildir/'), userdata.realname, domains.domain from userdata, domains where userdata.domain = domains.id and substring(userdata.mapping,1,3) = 'dir'
Når jeg kigger på det nu, virker de ikke så slemme, og med en rigtig database ville det være en smal sag at lave ovenstående smart og fint.
En dag når jeg får tid…
Mine tests viste mig også at der bliver lavet mindst 4 opslag p. modtagen mail, hvilket heller ikke gjorde det federe. Derfor besluttede jeg dengang at lave et script (php var hvad jeg kunne) som parsede de “smukke” tabeller og lavede noget i stil med hashmaps (bare i sql) som postfix og courier-imap så blev peget over på.
Efterhånden fik jeg interesseret en anden gut i setuppet, men han skulle også bruge nogle flere features, så scriptet og databasen blev udvidet og nu står der efterhånden en del.
- Scanning af mails med amavis og spamassassin
- Forwards
- Mailboxes (imap og pop3)
- Autoresponder
- i – alias
En omvendt måde at lave forwards på. Definer en adresse og x-andre adresser i samme domæne som alle skal gå til den første adresse. Sært - Mailinglists med mailman
Og diverse kombinationer af ovenstående.
Tiden er dog ved at være løbet fra hele setuppet og koden og sql’en , men det skulle dog virke endnu.
Filer i setuppet
Disclaimer
Alt det her kræver at man faktisk fatter en smule af postfix og courier for at kunne bruge det til noget
- Postfix-config filerne
Først og fremmest, v*.cf og en master.cf entry til autoresponder, transport.cf og main.cf - Courier.
Begge filer skal bruges, men det er muligt at istedet for at bruge filen direkte man burde merge de “rigtige” ting ind i en tidssvarende conf. - Databasen
Skemaet til databasen. *.tables.dump er incl. misc entries fra et gammelt setup som man kan bruge som eksempel. De tabeller man bør ændre i er userdata,domains,autoreply. De andre står scriptet for. - Amavis, mailscanning/filtering.
Læg mærke til at der er lavet et farligt hack i toppen af amavisd.conf som sikkert er meget unødvendingt og kunne laves smartede med passende amavis-features nu om dage. - Scripts.
Her er det famøse glue.php som står for oprettelsen af de rette mængder data for aggregat tabellerne. Derudover er der et autoreply script, men dette er major buggy. Faktisk broken så vidt jeg ved. - Cli
Jeg har faktisk forberedt en smule CLI til systemet, men der er ingen garanti for at noget som helst i dette bib funker. Here be dragons
Resten er bare pynt eller rod.
Hvis der er nogen spørgsmål eller rants så skriv til devnull@seet.dk…Hmm eller postfix@seet.dk