[FreeBSD] postfix virtual maps

BURJAN Gabor burjang at elte.hu
2002. Jan. 18., P, 15:20:11 CET


Szia,

On Fri, Jan 18, Potoczky Andras wrote:

> adott:
> mail.domain1.hu
> mail.domain2.hu
>
> A postfix jelenleg (eddig amit tudtam vele muvelni) ugy mukodik,
> hogy ha irok levelet:

> sajatmagam at domain1.hu cimre, akkor sajatmagam user megkapja a levelet.
> Ez eddig ok.  Ha irok meg egyet: sajatmagam at domain2.hu cimre, akkor
> azt is sajatmagam user kapja meg.

Nyilván mert mindkettő benne van a mydestination-ben.

> Hogyan lehetne azt megoldani, hogy a domain2 cimre erkezett userek
> mas postafiokokba menjenek? (Nem hatrany, ha meg kulon unix real
> user sincs mogotte, csak a postafiok). Mi az, amivel a postfixnek
> egyutt kellene a teljes feladatban mukodnie? Ez alatt arra
> gondolok, hogy ha szukseg van meg valamire, az mi?

A postfix a levelek fogadását, queue-olását, küldését, és opcionálisan
(ha nincs más MDA, LMTP, vagy hasonló varázslás), akkor mailboxba
pakolását végzi. 

Ami neked kell, az virtual maps (virtual(5) és VIRTUAL_README a
doksiban) és attól függően, hogy kicsiben vagy nagyban játszol,
mailboxokba/maildirbe lepakolni vagy egy (több) combos IMAP szervert
mögérakni.

Mivel sem a POP sem az IMAP protokollszinten nem rejt magában olyan
lehetőségeket, amivel name-based virtual hostingot tudnál csinálni,
ezért ha nincs sok IP-d, akkor érdemes leképezni a user at domain1 alakú
címeket mondjuk domain1-user vagy hasonló alakúra.  (Egyesek szeretik
magát a teljes e-mail címet használni POP/IMAP username-ként, a `@'
illetve a `.' karakterek sajátosságai miatt ez szerintem nem szerencsés,
ha később pl. Cyrus IMAP-ra migrálsz, akkor nagyot szívsz vele, ott
ugyanis ez folder-subfolder szeparálást végez, és mint ilyet az IMAP
szerver magában slashre fordítja.  Akkor aztán írhatsz mindenféle
wrappereket, hogy a user számára transzparensen működjön továbbra is a
dolog.

Ha egyszerű megoldást akarsz, akkor csinálj ilyesmit:

main.cf-be:
        config_directory = /ahol/nalad/van
        mydestination = $myhostname # a virtual domainek *NEM* kellenek
        virtual_maps =
                dbm:$config_directory/tables/virtual/domain1
                dbm:$config_directory/tables/virtual/domain2
        alias_database =
                dbm:$config_directory/tables/aliases.main
                dbm:$config_directory/tables/aliases.virtual
        alias_maps = $alias_database

virtual.*:
        domain1:
                domain1                         rtfm
                user1 at domain1                   domain1-user1
                user2 at domain1                   domain1-user2
        ...
aliases.virtual
        # local delivery, ld. local(8), aliases(5)
        domain1-user1                   /var/mail/virtual/domain1/user1/
        domain1-user2                   /var/mail/virtual/domain1/user2/
        ...

Vagy ugyanez pcre táblával még szebb.  Ezek után a kedvenc POP/IMAP
daemonodat beidomíthatod, hogy ebből a struktúrából szedje a leveleit.

Ha lusta vagy, akkor hozz létre invalid shell-el usereket, a virtual
táblából közvetlenül rájuk mutass, ekkor a leveleket kiszolgáló
szervernél csak annyit kell állítanod, hogy shell check nélkül
beengedjen.

LDAP + Postfix + Cyrus IMAP vagy Courier is szép megoldás, ezzel
számtalan előnyhöz jutsz: skálázhatóság, hozzáférés-korlátozás (shared
folderek, ACL-ek), Sieve levél-válogató nyelv...

	buga



További információk a(z) BSD levelezőlistáról