Levelezés/userek sql-ben

Üdv a nagyérdeműnek!

Kérdésem lenne, hátha valaki tud vmiféle útmutatást adni. Új szervert szeretnék üzembe helyezni, amire mindenféle szolgáltatást akarok migrálni.
De elakadtam, és a gugli barátomtól sem kaptam segítséget.
Több usert kellene kezelni különféle domainekből. Nem akarom őket felvenni valós userként, csak vmiféle sql userként, és szintén sql-ből szolgálnám ki pl a levelezési igényüket. Már csak azért is mert ha kiadok egy valós nevet valakinek ugynazt egy másik domainben csak átirányítással adhatom oda. Sql-ben viszont akárhányszor akárkinek.
Mivel web alapú levelezés is lesz, pl squirrelmail, ezért a virtual userezni sem túl jó.
Sajna nem találok korrektnek tűnő megoldást, csak béta jellegű/állapotúakat. Vagy nem jól keresem? Szóval több óra elteltével sem jutottam dűlőre.
Valójában és sendmail és vmi mysql/postresql párosítással szeretnék vmit kezdeni. Segítsetek, hátha van vkinek okos gondolata hozzá. Előre is köszi.

Hozzászólások

vagy ez: http://workaround.org/articles/ispmail-etch/

ez is virtual user, amit nem szeretnél.

monnyuk nem értem, hogy ha nem akarsz valós user-t és a virtual user sem tetszik, akkor mit akarsz csinálni.

ha kényelmetlen squirrelmail-ben beírni a domain-t, akkor megfaragod a login php-t úgy, hogy username input-hoz hozzátegye a @domain-t (dinamikusan, apache vhost stb.)

x

Itt alapfogalmakkal nem vagy tisztaban.

Valodi user: a rendszerben egyebkent is letezik, ertem ez alatt, hogy van neki egy akarmilyen shellje (/bin/false pl), az id parancs visszaad ertelmes dolgokat ra, a sajat home-jat o bitorolja, nem egy mailing user.

Virtual user: a rendszerben nem, csak adatszinten letezik, nincs neki semmilyen ertelemben shell-je, az id parancs nem ad a nevere vissza semmit, a sajat home-jat keptelen bitorolni.

Az SQL user amire te gondolsz, az a virtual user. Mivel virtual usernek lehet jelszava es felhasznaloneve, igy imap/pop3-n keresztul be tud lepni (webmailok imapon at lepkednek be), a korszerubb imap szervereket pedig fel tudod konfigolni ugy, hogy sql-bol vegye, hogy mit tekintunk az user home-janak (pontosabban maildir-jenek). Ha ez az info szinkronban van azzal, amit a MTA gondol, hogy hova kell letenni a user szamara a leveleket, akkor a levelezest mukodonek nevezzuk.

Barmilyen domainben oda lehet az usernek adni barmilyen nevet, nem szukseges meg forwardolni sem, ez valaszthato dolog. Lehet tobblogines rendszert is fenntartani, amikoris a user@mittudomain.com levelek es a user@tudomisen.hu levelek kulon tarolodnak (akarhol), meg lehet egyloginos is, amikor a ket cim levelei egy helyen tarolodnak (meg ekkor sem kell feltetlen forward, lehet, hogy a maildir siman csak egyazon helyre mutat, sot lehet alias is).

sendmail-t felejtsd el, postfix vagy exim kell neked. Postfix-szel jarsz talan a legjobban, arra kismillio howto kereng a neten. Keress itt a hupon a 'postfix mysql' szavakra (aposztrofok nelkul), es nezegesd at a talalatokat.

Ha van konkret kerdesed, akkor kerdezz nyugodtan, DE elotte mindenkeppen gondold at, hogy mit szeretnel, mert jelenleg nem tudod.

--


()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.

A magyar nyelv szépsége az, hogy sok mindenre van szinonímánk, míg ez az angolnak gyengesége. A virtual usert igen sokféle képpen értelmezi az ángélus szaknyelv, és a különféle projektek saját leírásai. Ebből viszont adódhat értelmezési bibi, h ki melyiket és mi formában mondja éppen annak...
Sajna, maga a szaknyelvi zsargon okozza a fogalmi zavart.

EXIM4 + Courier + MySQL + Virtual users

Szükséges csomagok:
apt-get install mysql-server mysql-client libmysqlclient12-dev
apt-get install exim4-daemon-heavy
apt-get install courier-pop-ssl
apt-get install courier-authmysql

Létrehozzuk a virtuális felhasználók könyvtárát és beállítjuk a jogokat:
sudo mkdir -m 600 /usr/local/vdomains
sudo chown mail:mail /usr/local/vdomains

Egy példa domain:
mkdir -m 600 /usr/local/vdomains/example.com
mkdir -m 600 /usr/local/vdomains/example.com/johnnie
chown mail:mail /usr/local/vdomains/example.com

A MySQL adatbázisban létrehozzuk a szükséges adatbázist és táblákat.

CREATE TABLE domains (
userid char(128) NOT NULL default ”,
KEY userid (userid)
) ENGINE=MyISAM;

CREATE TABLE users ( id char(128) NOT NULL default ”, crypt char(128) NOT NULL default ”, clear char(128) NOT NULL default ”, name char(128) NOT NULL default ”, uid int(10) unsigned default ‘8’, gid int(10) unsigned default ‘8’, home char(255) NOT NULL default ”, maildir char(255) NOT NULL default ”, quota char(255) NOT NULL default ”, KEY id (id) ) ENGINE=MyISAM;

Egy példa felhasználó:
INSERT INTO users (id, crypt, clear, name, uid, gid, home, maildir, quota) VALUES (‘johnnie@example.com’, ENCRYPT(‘johnniepass’), ‘johnniepass’, ‘johnnie’, 8, 8, ‘/usr/local/vdomains/example.com/users/johnnie’, ‘/usr/local/vdomains/example.com/users/johnnie/Maildir/’, ”);

Figyelni kell, hogy a Maildir "/"-re végződjön, ellenkező esetben az exim4 mailboxba kézbesít.

Létre kell hozni a felhasználó könyvtárjait:
maildirmake /usr/local/vdomains/example.com/users/johnnie

A Courier konfigurálása:

Fájl: /etc/courier/authdaemonrc
Állítsd be: authmodulelist="authmysql"

Fájl: /etc/courier/authmysqlrc
Állítsd be:
MYSQL_SERVER localhost
MYSQL_USERNAME mail
MYSQL_PASSWORD secret
MYSQL_SOCKET /var/run/mysqld/mysqld.sock
MYSQL_DATABASE mail
MYSQL_USER_TABLE users
MYSQL_CRYPT_PWFIELD crypt
MYSQL_UID_FIELD uid
MYSQL_GID_FIELD gid
MYSQL_LOGIN_FIELD id
MYSQL_HOME_FIELD home
MYSQL_NAME_FIELD name

Az Exim konfigurálása:

A következő fájlt kell szerkeszteni: /etc/exim4/conf.d/main/01_exim4-config_listmacrosdefs
hide mysql_servers = localhost/maildb/mail/secret
domainlist local_domains = localhost:january.randomsequence.com:mysql;SELECT userid FROM domains WHERE userid='$domain';

Új fájl:
/etc/exim4/conf.d/router/999_exim4-config_mysql_user

Tartalma:
virtual_user:
driver = redirect
allow_fail
allow_defer
data = ${lookup mysql{ SELECT maildir FROM users WHERE id='${local_part}@${domain}' }}
directory_transport = address_directory

virtual_catchall_user:
driver = redirect
allow_fail
allow_defer
data = ${lookup mysql{ SELECT maildir FROM users WHERE id='*@${domain}' }}
directory_transport = address_directory

A következő fájlt ismét szerkeszteni kell:
/etc/exim4/conf.d/transport/35_exim4-config_address_directory
Tartalma:
address_directory:
debug_print = "T: address_directory for $local_part@$domain"
driver = appendfile
envelope_to_add = true
return_path_add = true
check_string = ""
escape_string = ""
maildir_format = true
mode = 0600
user = mail
group = mail

A maildir_home beállítása:
Fájl: /etc/exim4/conf.d/transport/30_exim4-config_maildir_home
directory = /usr/local/vdomains/${domain}/${local__part}/Maildir/

Állítsuk be az Exim4-et is:

dc_eximconfig_configtype='internet'
dc_other_hostnames=''
dc_local_interfaces='127.0.0.1:[SERVER IP ADDRESS]'
dc_readhost=''
dc_relay_domains=''
dc_minimaldns='false'
dc_relay_nets=''
CFILEMODE='644'
dc_use_split_config='true'
dc_hide_mailname='false'
dc_mailname_in_oh='true'

Nagyjából ennyi.

Ez helyett:


SELECT maildir FROM users WHERE id='${local_part}@${domain}'

ez?


SELECT CONCAT(maildir, '/') FROM users WHERE id='${local_part}@${domain}'

Eggyel kevesebb adminisztracios problema.
--


()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.

SELECT maildir FROM users WHERE id='${local_part}@${domain}'