Complete Virtual Mail Server/Courier-IMAP to Database

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Complete Virtual Mail Server/Courier-IMAP to Database and the translation is 100% complete.
Other languages:

Bevezetés

A courier-IMAP az IMAP és a POP3 szolgáltatások nyújtására is szolgál. Sokakat érdekelni fog az IMAP, mivel a POP3-at már nem használják annyira. Ez teljesen érthető, mivel az IMAP-nak számos előnye van.

A POP3 és az IMAP közötti fő különbség az lenne, hogy az IMAP az üzeneteket megtartja a szerveren, míg a POP3 esetén az ügyfél megkapja az üzeneteket, majd azok eltűnnek a szerverről. Az üzenetek kiszolgálón történő tartása lehetővé teszi több ügyfél számára, hogy aktívan működjön ugyanazzal a postaládával a különböző helyekről. A legalapvetőbb példa a webmail és az asztali kliens, amely egyszerre ugyanazon postafiókhoz fér hozzá. Általánosságban véve a webmail-kliensprogramok erősen támogatják az IMAP protokollt. Ennek ára elsősorban a lemezterület többletfoglalása és a feldolgozási teljesítmény megnövekedése a levelezőszerveren. Mivel a lemezterület olcsó manapság, egy 32 GB méretű férőhely már sok helyet kínál az e-mailek számára, mindezt minimális költségekkel. Valamint ha a feldolgozási teljesítmény problémát jelent, akkor a szerveroldali keresések letilthatóak a számítógép jelentős igénybevételének csökkentése érdekében.

Ez a fejezet főleg az IMAP protokollra fog összpontosítani, de a teljesség kedvéért tartalmazni fogja a POP3 protokollt is. Szükség lehet némi kutatásra a két protokoll tekintetében, ha a választás nem olyan biztos.

A courier-IMAP telepítése

A net-mail/courier-imap programcsomag tartalmaz néhány USE jelölőzászlót, amelyeket meg kell vizsgálni. A net-libs/courier-authlib programcsomag fontos függőség, mivel ő felelős a felhasználók hitelesítéséért, tehát a USE jelölőzászlókat is megvizsgálják.

USE flags for net-libs/courier-authlib Courier authentication library

berkdb Add support for sys-libs/db (Berkeley DB for MySQL)
debug Enable extra debug codepaths, like asserts and extra output. If you want to get meaningful backtraces see https://wiki.gentoo.org/wiki/Project:Quality_Assurance/Backtraces
gdbm Add support for sys-libs/gdbm (GNU database libraries)
ldap Add LDAP support (Lightweight Directory Access Protocol)
mysql Add mySQL Database support
pam Add support for PAM (Pluggable Authentication Modules) - DANGEROUS to arbitrarily flip
postgres Add support for the postgresql database
sqlite Add support for sqlite - embedded sql database
static-libs Build static versions of dynamic libraries as well

Kizárólag a kívánt adatbázis-háttérprogramokat válassza ki.

Warning
A libauth*sql.so csak abban az esetben tud létrejönni, ha be van állítva a -vpopmail USE jelölőzászló, és a rendszerünkre nincs feltelepítve a vpopmail. A vpopmail-t és libauth*sql.so-t ne keverje.
Note
A fam USE jelölőzászlóra szükség van az IDLE (például a 'push') funkció működéséhez.

Ha a megfelelő USE jelölőzászlók be vannak állítva, akkor a emerge segítségével történő courier-imap programcsomag-létrehozás futásakor a courier-authlib programcsomag is létre fog jönni:

root #emerge --ask net-mail/courier-imap

A courier-authlib konfigurálása

Postgres

A courier-authlib root felhasználói jogosultságokkal fut, így a socket-hez való hozzáférés alapértelmezés szerint engedélyezett lesz.

Note
Kizárólag azok a mezők vannak itt felsorolva amelyeket módosítani kell. Kettő kommentezett lehetőség van. A PGSQL_HOST nyilvánvalóan, ahogy már említettük, Unix socket-ek lesznek. A PGSQL_QUOTA_FIELD egyelőre ki van kommentezve, mivel a kvóták a később fázisban lesznek engedélyezve. A PGSQL-UID_FIELD, a PGSQL-GID_FIELD és a PGSQL_HOME_FIELD (Vegye figyelembe a perjelet!) ve vannak állítva statikus értékekre, észrevehető, ahogy idézve vannak. Ennélfogva statikus értékek vannak használva, nem pedig adatbázisból származó értékek.
FILE /etc/courier/authlib/authpgsqlrcHozzáférést kapni az adatbázishoz
##NAME: LOCATION:0
# PGSQL_HOST		pgsql.example.com
PGSQL_PORT		5432
PGSQL_USERNAME		postfix
PGSQL_PASSWORD		$password
 
##NAME: PGSQL_DATABASE:0
PGSQL_DATABASE		postfix
 
##NAME: PGSQL_USER_TABLE:0
PGSQL_USER_TABLE	mailbox
 
##NAME: PGSQL_CRYPT_PWFIELD:0
PGSQL_CRYPT_PWFIELD	password
 
##NAME: PGSQL_UID_FIELD:0
PGSQL_UID_FIELD		'5000'
 
##NAME: PGSQL_GID_FIELD:0
PGSQL_GID_FIELD		'5000'
 
##NAME: PGSQL_LOGIN_FIELD:0
PGSQL_LOGIN_FIELD	local_part
 
##NAME: PGSQL_HOME_FIELD:0
PGSQL_HOME_FIELD	'/var/vmail/'
 
##NAME: PGSQL_NAME_FIELD:0
PGSQL_NAME_FIELD	name
 
##NAME: PGSQL_MAILDIR_FIELD:0
PGSQL_MAILDIR_FIELD	maildir
 
##NAME: PGSQL_QUOTA_FIELD:0
# PGSQL_QUOTA_FIELD	quota
 
##NAME: PGSQL_WHERE_CLAUSE:0
# Deal only with active mail accounts.
PGSQL_WHERE_CLAUSE      active='1'

Ha a bejelentkezéskor a user@domain.com szintaxis van használva a username helyett, akkor a PGSQL_LOGIN_FIELD értékét a local_part-ról a username-re kell változtatni.

A még fejlettebb hitelesítési SQL utasítások használatához a PGSQL_SELECT_CLAUSE használható. A courier-authlib figyelmen kívül hagyja az SELECT utasítások korábbi beállított paramétereit, de felhasználja azokat a fiókok számának megszámolására vagy a jelszó megváltoztatására. Ennélfogva a jelszó megváltoztatásakor a felhasználónév mezőt továbbra is használni fogja. Ha a hitelesítés a username ellenében történik, akkor ne felejtse el, hogy a felhasználóneveknek egyedinek kell lenniük.

FILE /etc/courier/authlib/authpgsqlrcEgyéni hozzáférést kaphat az adatbázishoz
PGSQL_SELECT_CLAUSE	SELECT local_part, password, '', '5000', '5000',	\
			'/var/vmail/', maildir, quota, name, ''		 	\
			FROM mailbox WHERE local_part='$(local_part)'	 	\
			AND active='1'

MySQL

A következő újrakonfigurálás a hitelesítéshez a mailsql adatbázis használatához a courier-imap -ban és a postfix -ben. A következő példák mindegyikében cserélje ki a $password jelölést amailsql mysql felhasználó jelszavával.

FILE /etc/courier/authlib/authmysqlrcHitelesítés konfigurálása
MYSQL_SERVER            localhost
MYSQL_USERNAME       mailsql
MYSQL_PASSWORD      $password
MYSQL_DATABASE          mailsql
MYSQL_USER_TABLE        users
## (Make sure the following line is commented out since we're storing plaintext.)
#MYSQL_CRYPT_PWFIELD    crypt
MYSQL_CLEAR_PWFIELD     clear
MYSQL_UID_FIELD         uid
MYSQL_GID_FIELD         gid
MYSQL_LOGIN_FIELD       email
MYSQL_HOME_FIELD        homedir
MYSQL_NAME_FIELD        name
MYSQL_MAILDIR_FIELD     maildir

A szükséges szolgáltatások újratöltése:

root #rc-service courier-authlib restart
root #rc-service saslauthd restart

Az authdaemon konfigurálása

Az authdaemon valójában a hitelesítés elvégzéséért felelős. Itt az authdaemon az adatbázis megfelelő háttérprogram használatához van bekonfigurálva. A Portage csomagkezelő valójában megfelelően állítja be az authmodulelist változóját. Ellenőrizze ezt le a konfigurációs fájlban. Engedélyezze a hibakeresést is itt, mivel ez később elősegíti a lehetséges problémák felkutatását.

PostgreSQL

FILE /etc/courier/authlib/authdaemonrcA hitelesítő modulokat ellenőrzése
##NAME: authmodulelist:2
authmodulelist="authpgsql "
 
##NAME: DEBUG_LOGIN:0
DEBUG_LOGIN=1
Note
Nyilván ha több vagy más authmodul-ra van szükség, akkor ezeket is ide kell sorolni.

MySQL

FILE /etc/courier/authlib/authdaemonrcA hitelesítő modulok ellenőrzése
##NAME: authmodulelist:2
authmodulelist="authmysql authpam"
 
##NAME: DEBUG_LOGIN:0
DEBUG_LOGIN=1

Hozzáférési jogosultságok

A jogosultságokat helyesen kell beállítani, mivel a fájlok érzékeny jelszóadatokat tartalmazhatnak.

root #chmod 660 /etc/courier/authlib/auth*rc
root #chown mail:mail /etc/courier/authlib/auth*rc

A courier-authlib tesztelése

A courier-authlib tartalmaz egy egyszerű tesztelési segédprogramot. Ez érvényes felhasználónevet igényel paraméterként. Ne habozzon, nézze meg az authtest man kézikönyvet további információkért. Rövid és tömör segítség.

Néhány alapvető teszt elvégzéséhez indítsa el az authlib szolgáltatást:

root #/etc/init.d/courier-authlib start

Futtassa a authtest parancsot a testuser névvel:

root #authtest testuser
Authentication succeeded.
 
     Authenticated: testuser  (uid 5000, gid 5000)
    Home Directory: /var/vmail
           Maildir: example.com/testuser/
             Quota: (none)
Encrypted Password: $1$16117118$ajxN3QRilmP5zLVHjTkE31
Cleartext Password: (none)
           Options: (none)

POP3/IMAP konfigurálása

POP3

A POP3 protokoll esetében kevés konfigurálás szükséges a működésbehozáshoz. Javasoljuk azonban, hogy hagyja ki ezt a részt, és ne engedélyezze/használja a POP3 protokollt, és így hagyja ezt a beállítást NO értéken. Előfordulhat, hogy a felhasználó eltávolíthatja az összes üzenetet, amelyet állítólag a szerveren kellett tárolni az IMAP használatához, majd helytelenül konfigurálja a levelezőklienst, és törli a szerveren tárolt postaládájának a másolatát.

FILE /etc/courier-imap/pop3dPOP3 engedélyezése
##NAME: POP3DSTART:0
POP3DSTART=YES

IMAP

Az IMAP protokollnak van néhány képessége, amelyeket be lehet kapcsolni.

  • SORT - Lehetővé teszi a szerveroldali keresést az üzenetek között.
  • IDLE - A push típusú kapcsolatok engedélyezéséhez.
FILE /etc/courier-imap/imapdAz imapd és néhány opciója
##NAME: IMAP_CAPABILITY:1
IMAP_CAPABILITY="IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE"
 
##NAME: IMAP_CHECK_ALL_FOLDERS:0
IMAP_CHECK_ALL_FOLDERS=1
 
##NAME: IMAP_ENHANCEDIDLE:0
IMAP_ENHANCEDIDLE=1
 
##NAME: IMAP_EMPTYTRASH:0
IMAP_EMPTYTRASH=Trash:40,Junk:7
 
##NAME: IMAPDSTART:0
IMAPDSTART=YES
 
##NAME: MAILDIRPATH:0
MAILDIR=.maildir
MAILDIRPATH=.maildir
Note
A MAILDIRPATH változó tartalmaz néhány duplikációt. Győződjön meg arról, hogy megfelelően van beállítva és meg van tisztítva.

Egyes klienseknek minimálisan 2048 bites DH paraméterhosszra van szükségük. (Például azok akik a >=dev-libs/nss-3.19.1 -et használják). Generáljon egyet a következő parancs kiadásával:

root #DH_BITS=2048 mkdhparams

A következő lépésben győződjön meg arról, hogy a Courier használja:

FILE /etc/courier-imap/imapd-sslAnnak biztosítása, hogy a courier a mi dhparams.pem -et használja
TLS_DHPARAMS=/usr/share/dhparams.pem

IMAP/POP3 tesztelése

POP3

El kell indítani a courier-pop3d szolgáltatást:

root #/etc/init.d/courier-pop3d start

Az elindulását követően a telnet a kezdeti problémák azonosítására használható. Ha a telnet programmal történő bejelentkezés működik, akkor használható egy levelezőkliens:

user $telnet foo.example.com 110
+OK Hello there.
user testuser
+OK Password required
Pass secret
+OK logged in
Note
Ez az első alkalom, hogy a jelszó egyszerű szövegként van használva. Korábban csak $1$16117118$ajxN3QRilmP5zLVHjTkE31-ként volt ismert.
Warning
Ne felejtse el elkészíteni a user maildir fájlt a courier-maildirmake eszközzel.

Ha a tesztelés megfelelően működik, akkor adja hozzá a courier-pop3d értéket az alapértelmezett futási szinthez:

root #rc-update add courier-pop3d default

IMAP

El kell indítani a courier-imapd szolgáltatást:

root #/etc/init.d/courier-imapd start

Az elindulását követően a telnet a kezdeti problémák azonosítására használható. Ha a telnet programmal történő bejelentkezés működik, akkor használható egy levelezőkliens:

user $telnet foo.example.com 143
Trying 127.0.0.1...
Connected to foo.example.com.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT IDLE ACL ACL2=UNION STARTTLS] Courier-IMAP ready. Copyright 1998-2008 Double Precision, Inc.  See COPYING for distribution information.
1 LOGIN testuser secret 
1 OK LOGIN Ok.
1 LOGOUT
* BYE Courier-IMAP server shutting down
1 OK LOGOUT completed
Connection closed by foreign host.

Ha a tesztelés megfelelően működik, akkor adja hozzá a courier-imap értéket az alapértelmezett futási szinthez:

root #rc-update add courier-imapd default

A dolgok becsomagolása

Kapcsolja ki a hibakeresést, ha ez a szakasz megfelelően működik.

FILE /etc/courier/authlib/authdaemonrcA hibakeresés kikapcsolása
##NAME: DEBUG_LOGIN:0
DEBUG_LOGIN=0