Virtuell e-postdomän Introduktion Med dagens kraftfulla PCdatorer kan de uppgifter som förr löstes med flera servrar numera lätt lösas med en enda. Med succen med internet och epost måste vi nu hantera fler och fler epostdomäner. Här är ett sätt att hantera flera individuella epostdomäner i en och samma maskin. Då blir naturligtvis Linux en av de främsta platformarna för detta. 11.. PPrriinncciippeerr Virtuella epostdomäner är ett sätt att hantera individuella listor med användare på en och samma server. Varje virtuell domän har sin egen lösenordsfil, sitt eget spoolbibliotek och sin egen aliasfil. För varje virtuell domän kommer _L_i_n_u_x_c_o_n_f att sätta följande. · /etc/vmail/passwd.virtual_domain · /etc/vmail/shadow.virtual_domain · /etc/vmail/aliases.virtual_domain · /var/spool/vmail/virtual_domain/ · /vhome/virtual_domain/ Där virtual_domain är en domän. t.ex foo.com. 22.. DDeeffiinniittiioonnssddiiaalloogg fföörr vviirrttuueellllaa ddoommäänneerr För att skapa en virtuell epostdomän måste du fylla i en dialog. Det finns andra uppgifter som är relaterade till DNS och IP alias och de beskrivs i andra sektioner i denna hjälp. Här skall vi beskriva huvuddialogen. 22..11.. NNaammnn Du måste skriva ett domännamn. Det är allt som behövs. 22..22.. RReesseerrvvddeessttiinnaattiioonn Detta är ett valfritt fält. Normalt när e-post skickas till ett konto i en virtuell domän sker följande. · Leta efter ett alias för det namnet. Om det finns finns, skicka meddelandet till varje medlem i den listan. Alias kan peka mot andra alias. · om man inte hittar något alias så letar man igenom användarlistan för den virtuella domänen. Meddelandet läggs sedan till i den användarens e-post folder. · Om varken alias eller användare hittas så avvisas posten och avsändaren får ett felmeddelande. Om reservdestinationen är definierad kommer posten skickas till reservadressen istället, Adressen kan vara TToomm Detta är standard. Posten blir avvisad, aannnnaann__aannvväännddaarree@@aannnnaann__ddoommäänn Posten skickas till en användare i en annan domän. @@eenn__aannnnaann__ddoommäänn Posten skickas till samma användarkonto fast i en annan domän. kkoonnttoo Posten skickas till ett annat användarkonto i samma domän. Kontot kan vara ett alias. 22..33.. AAlliiaassffiilleerr Varje virtuell domän har en aliasfil som heter /etc/vmail/aliases.domän Där domän är domänens namn. Du kan specificera upp ytterligare två till. Den implicita adressen har den högsta prioriteten. Filerna används av programmet vdeliver. vdeliver söker efter den första filen och sedan den andra till den hittar en matchning. Aliasfiler handhas av samma dialog som normala sendmailalias och erbjuder samma möjligheter. 22..44.. AAlliiaass fföörr ddeennnnaa ddoommäänn Det är möjligt att förse flera domännamn med pekare till en och samma användarpool. Du kan lägga till så mycket som behövs. T.ex kan man definiera den virtuella domänen domän.foo.com och senare registrera foo.com. Genom domänalias kommer båda domänerna att bli likvärdiga. 33.. EEnn nnootteerriinngg iinnnnaann dduu bböörrjjaarr Virtuella domäner är ett komplement till den normala eposten. Vanliga epostdomäner fungerar fortfarande som förut och posten lagras precis som förr i /var/spool/mail. Så om din maskin nu tar emot post för domänen foo.com och du separat vill ta emot post för foo1.com och foo2.com så behöver du bara definiera dessa två som virtuella e-postdomäner. Konfigurationen för foo.com påverkas inte. 44.. HHuurr dduu ssäätttteerr uupppp eenn vviirrttuueellll ee--ppoossttddoommäänn Här är det, steg för steg. 44..11.. HHuurr mmaann aannppaassssaarr fföörr PPOOPP cclliieenntteerr Det är inget specillt man måste göra på POP användarsidan. Vi vill slå ihop postservrar i en box, inte berätta för alla om det :-) 44..22.. HHuurr mmaann iinnssttaalllleerraarr sseerrvveerrnn Tricket är att lösa epostproblemet på exakt samma sätt som med virtuell WWW: Du behöver IP adresser. Antag att vi vill skapa 3 virtuella postdomäner: va.foo.com, vb.foo.com, vc.foo.com. Tänk på det på samma sätt som du skulle för att installera 3 separata servrar var och en betjänande en enda postdomän. Detta är vad vi kommer beskriva här och på slutet kommer vi visa hur dessa servrar slås ihop till en enda maskin. 44..22..11.. DDNNSS ssiiddaann Från DNS sidan har vi en epostserver per domän. så MX för varje domän ser ut så här. · va.foo.com -> mailhost.va.foo.com · vb.foo.com -> mailhost.vb.foo.com · vc.foo.com -> mailhost.vc.foo.com Med DNS så är det detta vi berättar för omvärlden. Det är också vad vi berättar för våra epostanvändare. Vi skulle kunna med denna setup ha en riktig server per postdomän. Så ser det iaf ut innan vi ger oss in på virtuella domäner. 44..22..22.. IInnssttaalllleerraa sseerrvvrraarrnnaa För att fortsätta med installationen (riktig eller virtuell) går vi in i DNS:en och allokerar ett IP nummer för varje server (det här är nyckeln). Här använder vi privata IP nummer som ett exempel. Du ser att vi allokerat IP nummer från samma nätverk. · mailhost.va.foo.com -> 172.16.0.1 · mailhost.vb.foo.com -> 172.16.0.2 · mailhost.vc.foo.com -> 172.16.0.3 Sen kan vi gå in och installera 3 servrar med dessa IP och informera _S_e_n_d_m_a_i_l på var och en att ta emot post för en av dessa domäner. 44..22..33.. NNuu bblliirr vvii vviirrttuueellllaa Så nu, istället för att installera 3 servrar, så installerar vi bara en enda. För varje domän måste vi · Definiera den med _L_i_n_u_x_c_o_n_f, vilket bara innebär att namnge domänen. · Definiera ett IP alias (igen med _L_i_n_u_x_c_o_n_f) så att maskinen svarar på frågor för detta IP nummer också. Detta görs i _L_i_n_u_x_c_o_n_f i menyn "nätverk/IP alias för virtuella värdar" · Installera /usr/lib/linuxconf/lib/vpop3d som en ersättning för /usr/sbin/in.pop3d i /etc/inetd.conf. vpop3d är en ersättning för standard pop3d även om du inte använder virtuella domäner. IP aliaset är nyckeln här. POP protokollet har ingen aning om hur det skall identifiera målet för en förfrågan, utom just via IP numret. Det är därför POP klienter måste använda ett annat namn, t.om ett annat IP nummer för att läsa post från olika domäner. Från dess synpunkt är detta vad den förväntar sig i alla fall. 44..22..33..11.. HHuurr mmaann iinnssttaalllleerraarr vvppoopp33dd Är vpop3d en ersättare för den normala POP3 demonen som du använder i den normala distributionen? Kanske inte. Olika distributioner innehåller olika varianter av pop3d. Dessa stöder då exempelvis , och andra inloggningsmekanismer. Det bästa alternativet för att stödja detta på ett enkelt sätt är att låta den vanliga pop3d hantera huvudepostdomänen. vpop3d ska då bara hantera de virtuella epostdomänerna. För att uppnå det här resultatet krävs det bara att du som argument till vpop3d ger sökvägen till den vanliga pop3demonen. vpop3d kommer då att överlåta kontrollen till den vanliga pop3demonen när det kommer en förfrågan som gäller huvuddomänen. Här är ett exempel på hur det kan se ut i /etc/inetd.conf: pop-3 stream tcp nowait root /usr/sbin/tcpd /usr/lib/linuxconf/lib/vpop3d /usr/sbin/ipop3d Så för att installera detta ska du inte ta bort den gamla raden för pop3. Du ska enbart lägga till /usr/lib/linuxconf/lib/vpop3d på raden enligt ovan. Det exakta utseendet på raden kan variaera lite grand mellan olika Linuxdistributioner. 55.. HHuurr mmaann ffeellssöökkeerr eenn kkoonnffiigguurraattiioonn De flesta fel som görs när man sätter upp en virtuell domän är relaterade till DNS. Här är några test du kan göra för att verifiera att din setup fungerar korrekt. Att använda en POP-klient för att testa brukar inte fungera. Antingen fungerar de eller så gör de det inte. 55..11.. KKoollllaa DDNNSS::eenn För varje virtuell domän måste du göra lite DNS jobb. Vi kommer att använda domönen va.foo.com som ett exempel, här är stegen. 55..11..11.. MMXX ffäälltteett Kommandot nslookup -q=mx va.foo.com borde skriva ut något användbart. Åtminstone namnet på e-post servern borde titta fram tillsammans med dess IP adress. Det är antingen mailhost.va.foo.com eller det officiella namnet på servern. Namnet som kommer fran behöver inte nödvändigtvis vara i va.foo.com domänen. Det måste dock peka till den riktiga fysiska servern. 55..11..22.. DDeenn vviirrttuueellllaa ee--ppoossttsseerrvveerrnn mailhost.va.foo.com måste finnas definierad i DNS:en. Här använder vi mailhost. Det kunde vara pop.va.foo.com, eller något annat. Följande kommando nslookup mailhost.va.foo.com borde producera en IP adress, följande kommando nslookup the_IP_number_you_got borde skriva ut mailhost.va.foo.com. Om du inte får detta resultat så kommer den virtuella POP servern inte att fungera alls. Punkt slut. Du måste ha en korrekt bakåtuppslagning för detta IP nummer. Linuxconf gör detta automatiskt om den speciella bakåtuppslagnings domänen är definierad på samma DNSserver som den virtuella domänen. Så, om du fick korrekt resultat av båda kommandona (med nslookup) så har du grovgörat redan klart. 55..11..33.. FFiinnnnss ddäärr eenn sseerrvveerr ssoomm llyyssssnnaarr?? Ge följande kommando: telnet mailhost.va.foo.com Detta borde koppla dig till den fysiska servern. Detta bevisar också att IP alias fungerar korrekt. 55..11..44.. FFiinnnnss ddäärr eenn vviirrttuueellll PPOOPP sseerrvveerr ssoomm llyyssssnnaarr?? Ge följande kommando för att se om vpop3d är korrekt installerat. Om detta kommando ger dig en korrekt hälsning så kan inte mycket gå fel nu. telnet mailhost.va.foo.com pop-3 Du borde se +OK Virtual va.foo.com POP3 Server (Version 1.004) ready. "va.foo.com" är nyckeln här. Om du inte ser detta så är helt enkelt den virtuella domänen inte definierad, eller så är vpop3d inte installerad i /etc/inetd.conf. 55..11..55.. EEtttt vveerrkkttyygg fföörr ssnnaabbbbtteesstt Scriptet /usr/lib/linuxconf/lib/checkvdomain kan användas för att göra ett snabbtest av vpop3d installationen för en virtuell domän. Kör det utan argument för att få information om programmet. Scriptet /usr/lib/linuxconf/lib/testalldomain läser filen /etc/named.conf och tar ut alla domäner som finns definierade i den. sedan kör det skriptet checkvdomain (under förutsättning att det finns en virtuell epostvärd för varje vdomän), för varje domän. Det rapporterar om domänen är korrekt konfigurerad eller inte. Användbart för att hantera mängder med virtuella domäner. 66.. NNäärr aalllltt ffuunnkkaarr 66..11.. HHuurr mmaann llääggggeerr ttiillll PPOOPPaannvväännddaarree När en virtuell domän fungerar så måste du fortfarande lägga till POPanvändare till den. Detta är ett menyval i Användarkonton meny som anropas Virtella POP konton (endast post) . Det låter dig välja en virtuell domän och lägga till nya konton till den. 66..22.. HHjjäällppaaddmmiinniissttrraattöörr För varje virtuell epostdomän kan man lägga till en del privilegier i Linuxconf. Du kan ge dessa privilegier till en vanlig användare. Han kan då hantera användarlistan (endast POP användare) i den virtuella domänen. Detta kan användas i html interfacet med. 66..33.. HHuurr eenn aannvväännddaarree äännddrraarr ssiitttt llöösseennoorrdd.. Ett problem med att ha endast POP användare är att dom inte har skalkonton från vilka de kan ändra sina lösenord. Linuxconf tillhandahåller en snygg lösning på detta problem. Detta är endast åtkomligt från webinterfacet i Linuxconf. Det stöder virtuella domäner fullt ut. Om du pekar din browser till http://din_server:98/htmlmod:userpass: kommer du få tillgång till en enkel sida som låter vem som helst att ändra sitt eget lösenord. "din_server" kan vara vilken som helst av de virtuella POP servrarna eller det vanliga namnet på din server. Linuxconf hanterar den korrekta lösenordsfilen baserat på IP numret som använts för att komma åt den. 77.. NNååggrraa pprroobblleemm 77..11.. AAllll uuttggååeennddee ppoosstt ffrråånn eenn vviirrttuueellll ddoommäänn äärr mmaasskkeerraadd Detta orsakas av en dåligt konfigurerad DNS. Den mesta posten som lämnar en server och som kommer från en virtuell domän blir omskriven så det ser ut som den kommer från serverns huvuddomän. Detta problem kommer sig av en ny egenskap hos sendmail. Vid start scannar sendmail alla nätverksinterface (och IP alias) och tar namnen som associeras med sina IP nummer. Sendmail antar nu och framåt att alla dessa namn är ekvivalenta med domänen på huvudservern. All post som kommer från ett av dessa namn kommer nu maskeras som om de kom från huvuddomänen. Lösningen på problemet är helt enkelt att du måste sätta bakåtuppslagningen för ett IP nummer så det pekar till ett domännamn istället för en värd i denna domän. Linuxconf kommer inte låta dig göra detta misstag eftersom den aldrig gör en bakåtuppslagning som pekar på ett domännamn. Om man ändrar i DNS för hand så förhindras dock inte detta. Så kontrollera att alla IP nummer som kopplas till IP alias pekar till en värd i domänen, inte till domänen självt. Starta om din DNS och din sendmail och sedan leker livet :-) 88.. SSaammmmaannffaattttnniinngg Efter att du satt korrekta IP alias kan en POP användare inte se om det finns en eller 3 servrar. Om belastningen på en av servrarna ökar kanske du vill sprida ut en del virtuella domäner till en annan server. Detta sker helt utan användarnas vetskap.