Complete Virtual Mail Server/Courier-IMAP to Database
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.
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.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.
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./etc/courier/authlib/authpgsqlrc
Hozzá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.
/etc/courier/authlib/authpgsqlrc
Egyéni hozzáférést kaphat az adatbázishozPGSQL_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.
/etc/courier/authlib/authmysqlrc
Hitelesítés konfigurálásaMYSQL_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
/etc/courier/authlib/authdaemonrc
A hitelesítő modulokat ellenőrzése##NAME: authmodulelist:2
authmodulelist="authpgsql "
##NAME: DEBUG_LOGIN:0
DEBUG_LOGIN=1
Nyilván ha több vagy más authmodul-ra van szükség, akkor ezeket is ide kell sorolni.
MySQL
/etc/courier/authlib/authdaemonrc
A 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.
/etc/courier-imap/pop3d
POP3 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.
/etc/courier-imap/imapd
Az 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
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:
/etc/courier-imap/imapd-ssl
Annak biztosítása, hogy a courier a mi dhparams.pem -et használjaTLS_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
Ez az első alkalom, hogy a jelszó egyszerű szövegként van használva. Korábban csak $1$16117118$ajxN3QRilmP5zLVHjTkE31-ként volt ismert.
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.
/etc/courier/authlib/authdaemonrc
A hibakeresés kikapcsolása##NAME: DEBUG_LOGIN:0
DEBUG_LOGIN=0