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.patchSpara 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
# 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.
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 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
# uncomment the following lines to disable certain features #disable_pop #disable_imap #disable_dialup #disable_password_changing #disable_external_relay #disable_smtp #disable_webmailTa bort kommentarstecknet (#) från raden med "disable_external_relay", så ska inte längre inloggning via POP3 öppna upp för utgående mail.