Mailserver med OpenBSD

SMTP Auth

http://qmail.jms1.net/scripts/service-qmail-smtpd-run.shtml
http://qmail.jms1.net/tls-auth.shtml
http://qmail.jms1.net/test-auth.shtml

Nu när du har en fungerande mailserver som hanterar obegränsat antal domäner och användare är det dags att börja kika på SMTP-AUTH, "efterföljaren" till "POP before SMTP", som gör att du tillåts skicka mail till vem som helst efter att du talat om för servern vem du är (genom att använda dina POP-mail uppgifter).

För att slippa skicka inloggningsuppgifterna okrypterat över nätet tillåts endast SMTP-AUTH då man har en uppkpppling mot mailservern som säkrats av TLS (det går att välja sämre säkerhet om man verkligen vill det).

JMS har ett lämpligt run-script för qmail-smtpd som hanterar inställningar för SMTP-AUTH, tcplimits, rbl, greylist, validrcptto.cdb, SPF och en hel del annat. För att just SMTP-AUTH ska fungera måste man ändra på några inställningar och kommentera bort delen för validrcptto.cdb patchen (om du inte har skapat en CDB databas för giltiga mailmottagare). För att relay-info i MySQL databas ska fungera/gå att använda behövs det dessutom läggas till några rader.

cd /service/qmail-smtpd
wget http://qmail.jms1.net/scripts/service-qmail-smtpd-run
 fi

 if [ ! -z "${SMTP_SQL:-}" ]
 then
   ACMD="$ACMD -M $SMTP_SQL"
Som vanligt har jag gjort iordning en patch-fil för de som vill slippa redigera själv:
wget http://www.bsd-guide.net/openbsd-mailserver/files/qmail/service-qmail-smtpd-run.patch
patch -p1 < service-qmail-smtpd-run.patch
rm service-qmail-smtpd-run.patch
Spara sen den fungerande 'run' fil du har och byt namn på den nya och testa:
mv run run.tiny
mv service-qmail-smtpd-run run
chmod 755 run
svc -d /service/qmail-smtpd
svc -u /service/qmail-smtpd

Vanliga problem:

Om du använder JMS qmail-smtpd-run script helt som det är kommer du med stor sannolikhet att råka ut för följande problem:

~vpopmail/bin/vchkpw [~vpopmail/bin/vchkpw] program does not exist

Felmeddelandet dyker upp i logg-filen för qmail-smtpd (/var/log/qmail/qmail-send/current). Detta innebär att qmail-smtpd inte kan hitta vchkpw
Någonting gör att det från run-scriptet inte fungerar med att ange sökvägen till vchkpw med ~vpopmail. Ange en fullständig sökväg (ex. /home/vpopmail/bin/vchkpw) istället så är problemet löst (fixas av min patch).

421 unable to read controls (#4.3.0)

SMTP sessionen avbryts utan att man hinner påbörja något:
# telnet 192.168.0.3 25
Trying 192.168.0.3...
Connected to 192.168.0.3.
Escape character is '^]'.
421 unable to read controls (#4.3.0)
Connection closed by foreign host.

Problemet uppstår om du låter VALIDRCPTTO_CDB variabeln vara satt i scriptet utan att det finns någon CDB fil att användas med validrcptto patchen. Åtgärda genom att skapa cdb filen, eller kommentera bort raderna om du inte vill använda den funktionen. CDB filen går att skapa på ett antal olika sätt, bl.a genom att använda cdbmake-12 som följer med i DJB's CDB paket (en samling små program för att hantera CDB databaser)

cd /usr/local/src/
wget http://cr.yp.to/cdb/cdb-0.75.tar.gz
tar xfvz cdb-0.75.tar.gz
cd cdb-0.75
make
make setup check

Då du installerat DJB's cdb paket skapar du först en textfil med alla tillåtna adresser, och därefter CDB filen:

cd /var/qmail/control
echo >>validrcptto "# add all valid recipients, one per line, for this server here. Wildcards allowed '@domain.name'"
ee validrcptto
cdbmake-12 validrcptto.cdb validrcptto.tmp < validrcptto

Lämpligtvis skapar du både textfilen och CDB-filen automatiskt genom att ex. kolla upp i databasen för vpopmail vilka användare som finns.

vchkpw-smtp: vpopmail user not found

Autentisering misslyckas fast du ger rätt användarnamn och lösenord. I /var/log/maillog finns en rad liknande:

Aug  3 01:28:14 spambox3 vpopmail[22810]: vchkpw-smtp: vpopmail user not found nisse@test.com:192.168.1.20
Aug  3 01:28:14 spambox3 vpopmail[22810]: vchkpw: can't write SQL logs

Problemet orsakas av att vchkpw inte kommer åt konfigurationsfilen för databasen (eller något liknande). Åtgärdas genom att sätta setuid och setgid bitarna på vchkpw:

chmod 6711 /home/vpopmail/bin/vchkpw

mkvalidrcptto

http://qmail.jms1.net/scripts/mkvalidrcptto.shtml
För att slippa uppdatera validrcptto filen och köra cdbmake-12 manuellt varje gång en mailadress läggs till eller tas bort, så har JMS skapat ett script för att göra såna uppdateringar automatiskt.

mkvalidrcptto behöver Perl modulen CDB_File, eftersom scriptet behöver kunna läsa och skriva en hel del CDB filer:

cpan -i CDB_File

Sen är det bara att ladda ner mkvalidrcptto och installera det på "lämpligt" ställe (dvs inom $PATH):

cd /usr/local/bin
wget  http://qmail.jms1.net/scripts/mkvalidrcptto
chmod 755 mkvalidrcptto

För att slippa få med systemets användarkonton (dvs användare som används för daemons m.m.) måste det göras några inställningar i mkvalidrcptto filen. Det som måste ändras är uid_min och uid_max, så att dessa värden är från den första riktiga användaren som skapats med kommandot useradd (i OpenBSD) utan att ange ett eget UID och upp till den sista användaren före qmail / vpopmail användarna.
I OpenBSD får den första användaren skapad på detta sätt UID=1000, vilket av min grundinstallation används upp av '_mysql'. uid_min ska alltså sättas till 1001 om du följt min guide från start. uid_max sätts till 7789, som är det sista lediga UID före qmail användaren 'alias'.

# any numeric uid's on the system which are lower than this will be ignored
# this way we don't create entries for root, bin, daemon, lp, news, uucp,
# and other non-used system users.
my $uid_min     = 1001 ;         # ignore uid's lower than this
my $uid_max     = 7789 ;       # ignore uid's higher than this
my @uid_ignore  = qw ( ) ;      # ignore any uid's listed in this array

Problemet går också åtgärda genom att serverns namn ('hostname') tas bort från filerna /var/qmail/control/locals och /var/qmail/control/rcpthosts

Detta innebär också att du inte kommer att kunna ta emot mail som skickas till ex. "root@spambox.mindomän.se" eller "postmaster@spambox.mindomän.se". Kanske oviktigt, då alla domäner på servern läggs upp som virtuella domäner. Systemets egna mail kommer ändå att gå fram via alias funktionerna.

Vill du ha en fungerande "root" eller "postmaster" adress lägger du lämpligtvis upp den virtuella domänen "mindomän.se" på servern med hjälp av "vadddomain".

Då du har fixat innehållet i ovanstående filer kan du enkelt uppdatera validrcptto.cdb genom att köra kommandona

cd /var/qmail/control
mkvalidrcptto -c validrcptto.cdb

Stäng av POP before SMTP

Då SMTP AUTH fungerar går det att stänga av POP before SMTP för att hindra virus och andra otygsprogram att skicka mail från din dator. I filen ~vpopmail/etc/vlimits.default finns blocket
# uncomment the following lines to disable certain features
#disable_pop
#disable_imap
#disable_dialup
#disable_password_changing
#disable_external_relay
#disable_smtp
#disable_webmail
Ta bort kommentarstecknet (#) från raden med "disable_external_relay", så ska inte längre inloggning via POP3 öppna upp för utgående mail.
 
 
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