Postfix, Dovecot ja lihtne virtuaalsete kasutajate kasutamine

Allikas: Imre kasutab arvutit
Mine navigeerimisribaleMine otsikasti

Sissejuhatus

Tööpõhimõte

Näiteks

  internet

    ...
     .
   __|__
  |     | tulemüür
  |     |
  |_____|
     |
     |
  ---|---|---------------------|-----
         |                     |
       __|__                 __|__
      |     |               |     |
      |     |               |     |
      |_____|               |_____|
        
      Postfix               Dovecot
      port 25/tcp           port 24/tcp
      port 587/tcp          port 12345/tcp

kus

  • TODO

Postfix

Muus osas seadistada nö tavalisel viisil, aga virtuaalsed kasutajad näidata

virtual_mailbox_domains = moraal.ee, imool.ee
virtual_transport = smtp:10.0.6.143
virtual_mailbox_maps = hash:/etc/postfix/virtual_mailbox_maps.txt
virtual_alias_maps = hash:/etc/postfix/virtual_aliases_maps.txt
transport_maps = hash:/etc/postfix/transport_maps.txt

kus

  • TODO
# cat /etc/postfix/virtual-mailbox-maps-txt.cf
mart.kask@imool.ee x
priit.kask@imool.ee x
  • TODO
# cat /etc/postfix/virtual_aliases_maps.txt
kontakt@imool.ee mart.kask@imool.ee, priit.kask@imool.ee
mart@imool.ee mark.kask@imool.ee
priit@imool.ee priit.kask@imool.ee
  • TODO
# cat /etc/postfix/transport_maps.txt
imool.ee lmtp:[10.0.6.143]
moraal.ee lmtp:[10.0.6.143]

Antud juhul toimub SMTP relee klientide autentimine vastu Dovecot serverit. St sama kasutajate baas, mis on kasutusel Dovecot imap klientide jaoks. SMTP AUTH toimub eraldi nö tavalisest port 25/tcp liiklusest port 587/tcp peal, Postfix seadistusfailis /etc/postfix/master.cf vastab sellel sektsioon

submission inet n - - - - smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=inet:10.0.6.143:12345
  -o smtpd_sasl_security_options=noanonymous
  -o smtpd_sasl_local_domain=$myhostname
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject

kus

  • smtpd_sasl_path - Dovecot auth serveri teenuse aadress

Dovecot tarkvara paigaldamine

Tarkvara paigaldamiseks sobib öelda

# apt-get install dovecot-imapd dovecot-lmtpd

Paigaldamise tulemusena tekib failisüsteemi

  • /etc/default/dovecot - seadistusfail
  • /etc/dovecot/dovecot.conf - seadistusfail
  • /etc/dovecot/conf.d - seadistusfailide kataloog
  • /etc/init.d/dovecot - käivitusskript
  • dovecot:dovecot ja dovenull:dovenull kasutaja:grupp
  • /etc/dovecot/private/dovecot.pem - salajane võti
  • /etc/dovecot/dovecot.pem - sertifikaat

Lisada kasutaja:grupp vmail:vmail

# groupadd -g 5000 vmail
# useradd -g vmail -u 5000 -m -d /opt/vmail -s /bin/bash vmail

Tekitada postkastide kataloog

# mkdir /srv/vmail
# chown vmail:vmail /srv/vmail

Dovecot seadistamine

LDAP kasutamine

  • /etc/dovecot/conf.d/10-auth.conf - kirjeldab, millise andmestiku vastu IMAP kasutaja autentimine toimub, antud juhul LDAP (viitab failile auth-ldap.conf.ext)
  • /etc/dovecot/conf.d/auth-ldap.conf.ext - kirjeldab passdb ja userdb, antud juhul vastavalt LDAP ja static (viitab failile /etc/dovecot/dovecot-ldap.conf.ext)
  • /etc/dovecot/dovecot-ldap.conf.ext - kirjeldab LDAP kataloogi asukoha ning kuidas LDAP päringuid teha ja vastuseid tõlgendada

/etc/dovecot/conf.d/10-master.conf

Seadistusfail /etc/dovecot/conf.d/10-master.conf sisaldab sektsiooni

service lmtp {
  unix_listener lmtp {
    #mode = 0666
  }

   # Create inet listener only if you can't use the above UNIX socket
  inet_listener lmtp { 
    # Avoid making LMTP visible for the entire internet
    address = 10.0.6.143
    port = 24
  } 
}

Selleks, et Postfix saaks smtp auth kontrolli teostada

# cat /etc/dovecot/conf.d/10-master.conf
..
service auth {
...
    inet_listener {
    port = 12345
  }
}
....

/etc/dovecot/conf.d/10-auth.conf

Seadistusfail /etc/dovecot/conf.d/10-auth.conf sisaldab ridu

disable_plaintext_auth = no
auth_mechanisms = plain login
!include auth-system.conf.ext

kus

  • TODO

/etc/dovecot/conf.d/auth-system.conf.ext

Seadistusfail /etc/dovecot/conf.d/auth-system.conf.ext sisaldab

# cat /etc/dovecot/conf.d/auth-system.conf.ext
passdb {
  driver = passwd-file
  args = /etc/dovecot/passwd
}

userdb {
  driver = static
  args = uid=vmail gid=vmail home=/srv/vmail/%d/%n allow_all_users=yes
}

kus

  • kasutajate ligipääsuandmed on tekstifailis /etc/dovecot/passwd
# cat /etc/dovecot/passwd 
priit.kask@imool.org:{SSHA}c+n6+reZtmVBrQQzxtB/KbrkPTp8eVKB
mart.kask@imool.org:{SSHA}9WHxpvarItLUtZDEJ+aju6+jmmqg1KsS

ning kuhu hashid on moodustatud abil (öeldakse sisestatud paroolile vastav hash, passwd fail tuleb ise moodustada)

# doveadm pw -s ssha
Enter new password: 
Retype new password: 
{SSHA}Sc3epuWFq/OlYJsKxibD/VBkZ2f6bi9s

/etc/dovecot/conf.d/10-mail.conf

Seadistusfail /etc/dovecot/conf.d/10-mail.conf näidab IMAP deemonile, kus asub failisüsteemis kasutaja postkasti ja sisaldab nt

mail_location = maildir:/srv/vmail/%d/%n/mail
namespace inbox {
  inbox = yes
  ..
  separator = /
  ...
  prefix = INBOX/
}

kus

  • TODO

SSL

SSL/TLS tööd kontrollib seadistusfail

/etc/dovecot/conf.d/10-ssl.conf

minimaalselt

ssl = required
ssl_cert = </etc/dovecot/dovecot.pem
ssl_key = </etc/dovecot/private/dovecot.pem
# ssl_ca = </etc/dovecot/ca.pem

kus

  • < märk tähistab, et parameerti väärtuseks on näidatud faili sisu
  • ssl_cert sisaldab teenuse sertifikaati + kogu ahelat (faili alguses on täpsemad serdid ja faili lõpus self signed juurikas kuigi põhimõtteliselt piisab nö eelviimasest vahesertifikaadist)

Sieve

Sieve (ingl. k. sõel) abil saab kasutaja oma IMAP klientprogrammis, reeglina mugava haldusliidese abil, mitte skripte redigeerides vms

  • seadistada serverit nii, et serveris jagatakse sissetulevad kirjad mingite kirjeldatud tunnuste abil postkastidesse (nt Subject sisaldab mingit sõne)
  • seadistada serveris vacation (out of office, autoresponse) teate saatmine

Samas on võimalik ka postkasti arvutis, kus Dovecot töötab tekitada käsitsi erinevaid sieve skripte.

Sieve filtri juurutamine

Sieve filtrite kasutamise tugi

# apt-get install dovecot-sieve

Tööd juhib seadistusfail

conf.d/90-sieve.conf

Plugini aktiviseerimiseks tuleb kirjade sisenemisega tegeleva mooduli, nt LMTP seadistusfailis muude pluginate hulgas näidatud sieve, nt

# cat conf.d/20-lmtp.conf
protocol lda {
  mail_plugins = $mail_plugins sieve quota
}

Managesieve server

Selleks, et Sieve kliendid saaksid Dovecot serverit juhtida tuleb postimasinasse juurutada Managesieve protokolliga töötav teenus

# apt-get install dovecot-managesieved

Tööd juhib seadistusfail

conf.d/20-managesieve.conf

Tulemusena töötab teenus vaikimisi pordil

# netstat -lnp | grep dove
tcp  0  0 0.0.0.0:4190   0.0.0.0:*     LISTEN      16667/dovecot
...

Sieve filtri kasutamine

Sieve filtri kasutamiseks on vaja sobivat IMAP klient tarkvara, nt Roundcube veebimeili. Kasutamine paistab välja selline

Fail:Roundcube-3.gif

Kasulikud lisamaterjalid

Taustal tekitatakse serveriss selline fail

# cat /srv/vmail/imool.org/priit/sieve/managesieve.sieve
require ["date","fileinto","relational"];
# rule:[leedu]
if header :contains "subject" "leedu"
{
  fileinto "leedu";
}
# rule:[eesti]
if header :contains "subject" "eesti"
{
  fileinto "eesti";
}

Vacation vastuste kasutamine

Roundcube abil paistab Vacation teate ettevalmistamine selliselt

Fail:Roundcube-2.gif

Tehniliselt toimub Vacation vastustega tegelemine Sieve abil, vastav sektsioon on sarnane

# /srv/vmail/imool.org/priit/sieve/managesieve.sieve
require ["date","fileinto","relational","vacation"];
# rule:[Vacation]
if allof (currentdate :zone "+0200" :value "ge" "iso8601" "2015-03-16T00:00:00+02:00", \
  currentdate :zone "+0300" :value "le"  "iso8601" "2015-03-30T00:00:00+03:00"
{
  vacation :subject "Olen tööpostilt eemal" text:
Tere!

Ma olen tööpostilt eemal ajavahemikul 16. märts - 29. märts 2015. Saadetud salvestatakse postkasti, 
aga tegelen nendega alatest  30. märtsist. Kiireloomuliste küsi

 
Piit
.
;

From: aadressile saadetakse vacation vastus üks kord, arvestust saatmiste kohta peetakse faili abil

/srv/vmail/imool.org/priit/.dovecot.lda-dupes

Tundub, et Dovecot, õieti Sieve saadab vastuse samas arvutis töötavad Postfix abil

# grep 97AB760884 /var/log/mail.log
Mar 15 17:35:02 postkast postfix/pickup[24414]: 97AB760884: uid=5000 from=<>
Mar 15 17:35:02 postkast postfix/cleanup[25017]: 97AB760884: 
  message-id=<dovecot-sieve-1426433702-589317- 1@postkast.toodang.imool.org>
Mar 15 17:35:02 postkast postfix/qmgr[9352]: 97AB760884: from=<>, size=857, nrcpt=1 (queue active)
Mar 15 17:35:04 postkast postfix/smtp[25022]: 97AB760884: to=<mart@imool.ee>, \
  relay=mail.imool.org[194.204.62.116]:25,  delay=1.4, delays=0.09/0/0.05/1.3, dsn=2.0.0, status=sent 
  (250 2.0.0 Ok: queued as 2615D603D4)
Mar 15 17:35:04 postkast postfix/qmgr[9352]: 97AB760884: removed

Käsitsi sieve skriptide kasutamine

Tundub, et Dovecot kompileerib sieve skriptid automaatselt ära. Nt kasutaja skript kasutab :global skripti

# cat conf.d/90-sieve.conf
..
sieve_global_dir = /etc/dovecot/sieve
...

ning

# cat /etc/dovecot/sieve/global.sieve 
require ["fileinto"];
# rule:[gloobus]
if header :contains "subject" "gloobus"
{
  fileinto "gloobus";
}

ning kasutaja sieve skript

# /srv/vmail/imool.org/priit/sieve/kasutajaskript.sieve
require ["date","fileinto","relational","vacation","include"];
include :global "global";

IMAP

Testimine

TODO

POP3

Testimine

$ telnet localhost 110
Trying ::1...
Connected to localhost.
Escape character is '^]'.
+OK Dovecot ready.
user priit@imool.org
+OK
pass priiduparool
+OK Logged in.
list
+OK 12 messages:
1 1096
2 1097
3 1097
.
retr 2
+OK 1097 octets
Return-Path: <imre@moraal.auul.pri.ee>
Delivered-To: <priit@imool.org>
Received: from imool.org
...
.
quit
+OK Logging out.
Connection closed by foreign host.

Kasutamine

Thunderbird Linux keskkonnnas

Fail:Postfix-dovecot-1.gif

kus

  • TODO

Paistab

Fail:Postfix-dovecot-2.gif

kus

  • ülemine konto on NAMESPACE (("INBOX/" "/")) NIL NIL
  • alumine konto on NAMESPACE (("" ".")) NIL NIL

Logimine

Dovecot võimaldab suhteliselt üksikasjalikult logida ja seejuures kirjeldada, mida logitakse, http://wiki2.dovecot.org/Plugins/MailLog

TODO

Märkused

Kui ...

Sep 24 15:38:35 postkast dovecot: master: Warning: /mnt/vdc is no longer mounted. See http://wiki2.dovecot.org/Mountpoints
Sep 24 15:38:35 postkast dovecot: master: Warning: /mnt/vdd is no longer mounted. See http://wiki2.dovecot.org/Mountpoints
root@postkast:~# doveadm mount remove /mnt/vdc
root@postkast:~# doveadm mount remove /mnt/vdd

Kasulikud lisamaterjalid

Kasulikud lisamaterjalid