Mailserver med OpenBSD

ucspi-tcp (TCPServer)

http://cr.yp.to/ucspi-tcp.html

Sköter allt som har med TCP-uppkoppling mot qmail (och andra daemons) att göra. För att MySQL patchen ska fungera tillsammans med SSL-patchen, så har jag gjort en smärre modifiering av den. Skillnaden mot den MySQL patch som finns annanstans är att jag bytt parametern "-S" mot "-M" ("-S" är upptagen av SSL-patchen).

Grundpatchar

Som med många andra delar av qmail finns det ett antal samlingar med patchar även för ucspi-tcp.
Det gemensamma är att kombinationerna åtminstone lägger in följande fixar:

errno - fixar ett problem med en gammal GCC version och vissa operativsystem
http://qmail.zoo-gate.fi/moni.csi.hu/pub/glibc-2.3.1/ucspi-tcp-0.88.errno.patch

nobase - tar bort en förvald RBL som inte längre är fri att använda
http://qmail.zoo-gate.fi/moni.csi.hu/pub/glibc-2.3.1/ucspi-tcp-0.88.nobase.patch

a_record - gör så att RBLs som använder A-records istället för TXT går att använda
http://qmail.zoo-gate.fi/moni.csi.hu/pub/moni.csi.hu/pub/glibc-2.3.1/ucspi-tcp-0.88.a_record.patch

Grunduppsättningen räknas som nödvändig för att ucspi-tcp (och framförallt rblsmtpd) ska fungera helt korrekt.

Visa/dölj kommandon

Övriga patchar

Många av dessa är inte kompatibla med varandra, och för det mesta funkar dom direkt efter att ha lagt på grundpatcharna.
Jag har också gjort ett par patchar som fixar problemen som uppstår vid vissa av kombinationerna (se nedan).

ssl - gör att det på ett enkelt sätt går att SSL-wrappa vilken daemon som helst
http://www.nrg4u.com/
fungerar med grunduppsättningen, men innehåller även errno patchen. För att slippa svara på en fråga om reverse patchning m.m, skippa den ur grunduppsättningen ovan, så funkar allt bra.

Visa/dölj kommandon

mysql - gör så att en tabell i en MySQL databas kollas efter IP som får använda servern för relay
http://sylvestre.ledru.info/howto/qmail/ucspi-tcp-0.88-mysql.updated.by.Pierre.Wieser.patch
Fungerar med grunduppsättningen.
Denna variant av MySQL patchen skiljer sig från den på TNPI, http://www.tnpi.biz/internet/mail/toaster/patches/ucspi-tcp-0.88-mysql3+rss.patch på det sättet att man kan (och måste) ange sökvägen till filen som innehåller uppgifter om SQL kopplingen som ska användas (användarnamn, lösenord, databas, tabeller osv). I den patchfil som finns här på BSD-Guide har jag ändrat -S parametern till -M för att göra den kompatibel med SSL-patchen och mina startscript.

Visa/dölj kommandon

tcpserver limits (JMS) - gör så att man kan neka smtp förbindelse om servern är för hårt belastad eller om samma ip eller ip-nät har för många aktiva uppkopplingar.
http://qmail.jms1.net/ucspi-tcp/tcpserver-limits-2007-12-22.patch
Fungerar med grunduppsättningen.

Visa/dölj kommandon

Kombinerade patchar

Följande patchar korrigerar felen som uppstår när man börjar kombinera patcharna ovan. Den första, ssl + mysql, ersätter helt och hållet mysql patchen, och de andra åtgärdar enbart felen efter den patch som sist lagts på.

ssl + mysql (efter nobase, a_record, ucspi-tcp-ssl)
http://www.bsd-guide.net/openbsd-mailserver/files/qmail/ucspi-tcp-0.88-ssl-mysql.patch
En patch där jag manuellt fixat de fel som uppstod för att den ena av dom var använd.
Mina förändringar av mysql patchen (baserad på den som ändrats av Pierre Wieser) tar inte med a_record fixen, så den läggs på manuellt före koden för mysql.
Läggs på efter nobase, a_record, och ucspi-tcp-ssl.

Visa/dölj kommandon

mysql + tcplimits (errno, nobase, a_record, mysql, tcp limits)
http://www.bsd-guide.net/openbsd-mailserver/files/qmail/tcpserver-limits-sql-fix.patch
En patch där jag manuellt fixat det felet som uppstod vid patchning med både mysql och tcp limits patchen.
Läggs på efter errno, nobase, mysql och tcplimits.

Visa/dölj kommandon

ssl + mysql + tcplimits (nobase, ssl, ssl+sql, tcplimits)
http://www.bsd-guide.net/openbsd-mailserver/files/qmail/ucspi-tcp-0.88-ssl-mysql-tcplimits.patch
En till patch där jag manuellt fixat problem som uppstod vid kombination av andra patchar.
Läggs på efter nobase, a_record, ssl, ssl+mysql och tcplimits.
Körs inuti ucspi-tcp-0.88.

Visa/dölj kommandon

ucspi.st-combo.09.patch
http://toribio.apollinare.org/qmail/ucspi.st-combo.09.patch
Salvatore's patch består om jag förstått allt rätt enbart av grunduppsättningen + en variant av tcplimits, samt ett tillägg för att ändra loggformatet så att det liknar qmail-scanners loggformat.

Visa/dölj kommandon

Vilka variant av tcpserver ska man välja ?

Det beror ju lite på vad du vill ha för funktioner..

mysql - om du vill lagra relay info i en databas. Fördelarna är att det via PHP script el. liknande enkelt går att rensa i listan över IP adresser som tillåts relaya genom servern. Det går också lika enkelt att lägga till IP adresser som alltid ska tillåtas använda servern för utgående mail. En annan fördel är att man enkelt kan dela databasen mellan flera utgående mailservrar om man vill göra en lastdelning via DNS. Nackdelen är att det inte som med relay datat i en cdb går att sätta en hel del extra variabler baserat på från vilken IP klienten har (det går däremot bra att använda både cdb och MySQL för relay databasen).

ssl - många daemons stöder åtminstone TLS direkt eller med lite extra parametrar vid kompilering. Räcker inte detta och du vill köra allt över säkra uppkopplingar, så går det att göra detta oavsett om servien stöder ssl eller inte med hjälp av denna patch.

tcplimits - gör att man kan ställa gränser på bl.a hur många connections som tillåts från ett specifikt IP åt gången. Man kan också helt och hållet neka förbindelsen ifall mailservern är för hårt belastad (har för högt "load average"). Använd om du upptäcker att alla daemons blir upptagna av spammare allt för ofta, eller om maskinen av en eller annan anledning får för mycket att göra och du automatiskt vill ge den möjlighet att "varva ner".

För guiden använder jag mysql + tcplimits:

cd /usr/local/src
tar xfz ucspi-tcp-0.88.tar.gz
mv ucspi-tcp-0.88 ucspi-tcp-0.88-bsdguide
cd ucspi-tcp-0.88-bsdguide
wget http://qmail.zoo-gate.fi/moni.csi.hu/pub/glibc-2.3.1/ucspi-tcp-0.88.errno.patch
wget http://qmail.zoo-gate.fi/moni.csi.hu/pub/glibc-2.3.1/ucspi-tcp-0.88.nobase.patch
wget http://qmail.zoo-gate.fi/moni.csi.hu/pub/glibc-2.3.1/ucspi-tcp-0.88.a_record.patch
wget http://www.bsd-guide.net/openbsd-mailserver/files/qmail/ucspi-tcp-0.88-mysql.Pierre.Wieser.PeO.patch
wget http://qmail.jms1.net/ucspi-tcp/tcpserver-limits-2007-12-22.patch
wget http://www.bsd-guide.net/openbsd-mailserver/files/qmail/tcpserver-limits-sql-fix.patch
patch -p1 < ucspi-tcp-0.88.errno.patch
patch -p1 < ucspi-tcp-0.88.nobase.patch
patch -p1 < ucspi-tcp-0.88.a_record.patch
patch -p1 < ucspi-tcp-0.88-mysql.Pierre.Wieser.PeO.patch
patch -p1 < tcpserver-limits-2007-12-22.patch
patch -p1 < tcpserver-limits-sql-fix.patch
rm *.patch
rm *.orig

Oavsett vilken samling patchar du väljer så kompileras och installeras TCPserver på samma sätt:

echo "gcc -O2 -I/usr/local/mysql/include/mysql" >conf-cc
echo "gcc -s  -I/usr/local/mysql/include/mysql -L /usr/local/mysql/lib/mysql -l mysqlclient" >conf-ld
make
make setup check

wget http://www.bsd-guide.net/openbsd-mailserver/files/qmail/ucspi.sql
echo "Enter the MySQL root password"
mysql -u root -p < ucspi.sql
Efter att ha skapat tabellen för relay information och vpopmail så är det lite småfix kvar (detta är ett medvetet avbrott mellan kommandona, då det blir problem med importen till MySQL ifall man försöker köra bägge samtidigt):
rm ucspi.sql
cd /var/qmail/control
wget http://www.bsd-guide.net/openbsd-mailserver/files/qmail/var_qmail_control_sql
mv var_qmail_control_sql sql
 
 
Visar de 30 senaste vägarna in till guiden. Visa alla
G o o g l e (www.google.se), sökning efter 'mail server openbsd'
G o o g l e (www.google.se), sökning efter 'mail server openbsd'
G o o g l e (www.google.se), sökning efter 'mail server openbsd'
http://www.bing.com/search?q=%22%40src%2ecom%2esg%22+loc%3ASE&filt=all&first=140&FORM=PERE
G o o g l e (www.google.se), sökning efter 'smtp auth'
G o o g l e (www.google.se), sökning efter 'bsd mail server'
G o o g l e (www.google.se), sökning efter 'bsd mail server'
G o o g l e (www.google.se), sökning efter 'mail server guide'
G o o g l e (www.google.se), sökning efter 'mail server guide'
http://www.bing.com/search?q=smpt+f%C3%B6r+live.se&form=CMDTDF&pc=CMDTDF&src=IE-SearchBox
http://new.bsd-guide.net/openbsd-mailserver/index.php?
G o o g l e (www.google.se), sökning efter 'mail server openbsd'
http://new.bsd-guide.net/openbsd-mailserver/index.php?
http://new.bsd-guide.net/openbsd-mailserver/index.php?
http://new.bsd-guide.net/?
http://new.bsd-guide.net/?
G o o g l e (www.google.se), sökning efter 'google.se/webbmail'
G o o g l e (www.google.se), sökning efter 'google.se/webbmail'
G o o g l e (www.google.se), sökning efter 'google.se/webbmail'
http://new.bsd-guide.net/openbsd-mailserver/index.php?
http://new.bsd-guide.net/openbsd-mailserver/index.php?page=4
G o o g l e (www.google.se), sökning efter 'bsd kommandon'
G o o g l e (www.google.se), sökning efter 'bsd kommandon'
G o o g l e (www.google.ru), sökning efter 'dovecot "disable_pop"'
G o o g l e (www.google.se), sökning efter 'virtuell domäner'
G o o g l e (www.google.se), sökning efter 'google.se/webbmail'
G o o g l e (www.google.se), sökning efter 'openbsd mailserver'
G o o g l e (www.google.se), sökning efter 'qmail disable smtp auth'
http://new.bsd-guide.net/openbsd-mailserver/index.php?
http://new.bsd-guide.net/openbsd-mailserver/index.php?page=1