Mailserver med OpenBSD

IMAP

http://www.dovecot.org/
http://qmail.jms1.net/dovecot.shtml

För guiden har jag valt Dovecot som IMAP server. En av anledningarna till att jag numera använder Dovecot är att det är betydligt enklare att skapa en POP3S resp IMAPS tjänster med denna server jämfört mot ex. Courier IMAP.

Den andra anledningen, som kanske inte är lika bra, är att JMS råkar ha en sida med information om Dovecot.
Mina instruktioner här följer i stort sett de på JMS's sida.

cd /usr/local/src
wget http://dovecot.org/releases/1.0/dovecot-1.0.15.tar.gz 
tar xfz dovecot-1.0.15.tar.gz 
cd dovecot-1.0.15 
./configure \
 --disable-ipv6 --without-passwd --without-passwd-file --without-shadow --without-pam \
 --without-checkpassword --without-bsdauth --without-gssapi --without-sia --without-ldap \
 --without-static-userdb --without-prefetch-userdb --without-sql \
 --without-pgsql --without-mysql --without-sqlite \
 --with-vpopmail --with-ssl=openssl
make
make install

Fixa lite problem som installationen inte ännu fixar (enligt JMS, och det stämmer till en viss del även vid installation under OpenBSD):

mkdir -m 0755 -p /usr/local/var/run/dovecot
chmod go=u-w /usr/local/share /usr/local/share/doc
chmod -R go=u-w /usr/local/lib/dovecot /usr/local/libexec/dovecot /usr/local/share/doc/dovecot

Vid min installation var rättigheterna ok, så det enda de 3 ovanstådende kommandona gjorde var att skapa /usr/local/var/(run/dovecot). Hur som helst så gör dessa kommandon nytta om dom gör något alls, och definitivt inte någon skada (rättigheterna ändras så att bara ägaren får skrivrättigheter till kataloger och filer som hör till Dovecot).

Skapa en användare som Dovecot kommer att köras som. Vi plockar igen ett högre användarid än vad mkvalidrcptto kommer använda. Det närmaste lediga är 7798 (efter att 7797 använts för vpopmail användaren). Samtidigt skapar vi plats för loggfiler och daemontools service scripten.

useradd -m -d /home/dovecot -s /sbin/nologin -c "Dovecot user" -u 7798 dovecot
mkdir /home/dovecot/log
mkdir /home/dovecot/service

JMS har en färdig konfigurationsfil som duger bra att börja med:

cd /home/dovecot
wget http://qmail.jms1.net/scripts/dovecot.conf
cd /usr/local/etc
ln -s /home/dovecot/dovecot.conf dovecot.conf

Ändra 'first_valid_uid' och 'last_valid_uid' i dovecot.conf till 7797 (dvs till det ID vpopmail användaren har, kolla med 'id -u vpopmail').

##
## Mail processes
##

verbose_proctitle = yes
first_valid_uid = 7797
last_valid_uid = 7797

Ändra IP-adressen på 'ssl_listen' (987:65:43:21) till serverns IP-adress (OBS! två ställen, det första i gruppen 'protocol imap' och det andra i 'protocol pop3'). Kommentera bort raderna med 'ssl_disable' och 'login_greeting_capability', eftersom dessa direktiv inte stöds i den senaste versionen. Sen är konfigurationen klar.

##
## SSL settings
##

#ssl_disable = no
ssl_cert_file = /var/qmail/control/servercert.pem
ssl_key_file = /var/qmail/control/servercert.pem
ssl_cipher_list = ALL:!LOW
verbose_ssl = yes

...
...

##
## IMAP specific settings
##

protocol imap {
        # non-encrypted IMAP:  127.0.0.1 (webmail) is secure by definition
        #
        # in the name of all that is good in the world, PLEASE
        # don't allow your users to use IMAP without encryption!
        #
        listen = 127.0.0.1:143

        # SSL-encrypted IMAP on port 993
        ssl_listen = 85.11.88.98:993

        imap_max_line_length = 65536
#       login_greeting_capability = yes
}

##
## POP3 specific settings
##

protocol pop3 {
        # in the name of all that is good in the world, PLEASE
        # don't allow your users to use POP3 without encryption!
        #
        #listen = 987.65.43.21:110

        # SSL-secured POP3 on port 995
        ssl_listen = 85.11.88.98:995

        pop3_no_flag_updates = no
        pop3_uidl_format = %v-%u
}

daemontools service

Även här har JMS färdiga script för att starta servicen och loggningen. Loggningen vill jag ha på ett annat ställe (/home/dovecot/log) och med andra filnamn, så det scriptet använder jag inte.
cd /home/dovecot/service
mkdir -m 0755 dovecot dovecot/log
cd dovecot/log
wget -O run http://www.bsd-guide.net/openbsd-mailserver/files/dovecot-log-run
chmod 0755 run
cd ..
wget -O run http://qmail.jms1.net/scripts/service-dovecot-run
chmod 0755 run
chown -R dovecot:users /home/dovecot

Starta Dovecot servicen:

ln -s /home/dovecot/service/dovecot /service
Kolla att Dovecot körs:
# svstat /service/dovecot
/service/dovecot: up (pid 27217) 13 seconds
#

Testa att logga in via POP3S från en annan dator på ditt nät. Om det fungerar kan du prova prata lite POP med servern för att se att allt verkar ok. Hela sessionen kan se ut något som det här:

# openssl s_client -connect 192.168.0.1:995
CONNECTED(00000004)
depth=0 /C=SE/ST=V\xE4sterbotten/L=Skellefte\xE5/O=BSD-Guide/CN=spambox1.bsd-guide.net/emailAddress=peo@bsd-guide.net
verify error:num=18:self signed certificate
verify return:1
depth=0 /C=SE/ST=V\xE4sterbotten/L=Skellefte\xE5/O=BSD-Guide/CN=spambox1.bsd-guide.net/emailAddress=peo@bsd-guide.net
verify return:1
---
Certificate chain
 0 s:/C=SE/ST=V\xE4sterbotten/L=Skellefte\xE5/O=BSD-Guide/CN=spambox1.bsd-guide.net/emailAddress=peo@bsd-guide.net
   i:/C=SE/ST=V\xE4sterbotten/L=Skellefte\xE5/O=BSD-Guide/CN=spambox1.bsd-guide.net/emailAddress=peo@bsd-guide.net
---
Server certificate
-----BEGIN CERTIFICATE-----
MIICmTCCAgICCQDBaDf1xTd7qTANBgkqhkiG9w0BAQQFADCBkDELMAkGA1UEBhMC
U0UxFTATBgNVBAgUDFbkc3RlcmJvdHRlbjETMBEGA1UEBxQKU2tlbGxlZnRl5TES
MBAGA1UEChMJQlNELUd1aWRlMR8wHQYDVQQDExZzcGFtYm94MS5ic2QtZ3VpZGUu
bmV0MSAwHgYJKoZIhvcNAQkBFhFwZW9AYnNkLWd1aWRlLm5ldDAeFw0wODA3Mjcx
NDUyMDBaFw0wOTA3MjgxNDUyMDBaMIGQMQswCQYDVQQGEwJTRTEVMBMGA1UECBQM
VuRzdGVyYm90dGVuMRMwEQYDVQQHFApTa2VsbGVmdGXlMRIwEAYDVQQKEwlCU0Qt
R3VpZGUxHzAdBgNVBAMTFnNwYW1ib3gxLmJzZC1ndWlkZS5uZXQxIDAeBgkqhkiG
9w0BCQEWEXBlb0Bic2QtZ3VpZGUubmV0MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB
iQKBgQCg3+Um6maytcLb0xR+F4KoPGLcpZO5QVjoXrYqoZn1dyLjrIbKss/C1wnO
4lDZTQgTS7yaIYHAEOLZL+HYsqdjmceCgQo0rKQ+9hcrS15l4mlsQYiE7BRln00v
WVW8CzU8SIK5W7bMvq2+i62V8QURSRN05f3LE3UipYNOKVVUywIDAQABMA0GCSqG
SIb3DQEBBAUAA4GBAHrzi0mneiBDPa4uY6SB/wZgWyI8Lm/sXeN+1P322jZZfPsp
7uwtnqt8z2kgSBt3i6O1VNHGcYv9NgYNrP/ZVx10K4nxXHNzmxeye5ppPyr52chJ
Ivy549kVxzbDX45Xzkni9pMqba/I77Itah5129dKHkoaAL0lZ/oPECGW6CiJ
-----END CERTIFICATE-----
subject=/C=SE/ST=V\xE4sterbotten/L=Skellefte\xE5/O=BSD-Guide/CN=spambox1.bsd-guide.net/emailAddress=peo@bsd-guide.net
issuer=/C=SE/ST=V\xE4sterbotten/L=Skellefte\xE5/O=BSD-Guide/CN=spambox1.bsd-guide.net/emailAddress=peo@bsd-guide.net
---
No client certificate CA names sent
---
SSL handshake has read 1233 bytes and written 340 bytes
---
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA
Server public key is 1024 bit
SSL-Session:
    Protocol  : TLSv1
    Cipher    : DHE-RSA-AES256-SHA
    Session-ID: 20461AB6352BCD32239FFB3E66AC6F6C2040D61F8B9622730743D8A812B3ED70
    Session-ID-ctx:
    Master-Key: 2C34A01CC2D54C9203CC9A487CBCD99E2EF0BDFC47ABF8340EC885CF28313127AB9BFDDB6DB94540421A032744F0ACF3
    Key-Arg   : None
    Start Time: 1218234074
    Timeout   : 300 (sec)
    Verify return code: 18 (self signed certificate)
---
+OK Dovecot ready.
user nisse@test.com
+OK
pass nissepw
+OK Logged in.
list
+OK 1 messages:
1 470
.
retr 1
+OK 470 octets
Return-Path: <peoyli@gmail.com>
Delivered-To: nisse@test.com
Received: (qmail 8700 invoked from network); 27 Jul 2008 17:10:03 +0200
Received: from spambox3.bsd-guide?056net (HELO spamboruk.com) (192.168.0.3)
  by spambox1.bsd-guide.net with SMTP; 27 Jul 2008 17:10:03 +0200
Received-SPF: neutral (spambox1.bsd-guide.net: 192.168.0.3 is neither permitted nor denied by SPF record at _spf.google.com)
Subject: testar med ett testmail

provar skicka ett testmail
.
quit
+OK Logging out.
closed
#
 
 
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