Virtuelle domener som bruker GNU pop3d og Postfix

Original English version: http://jth.net/virtual.html

GNU pop3d 0.10.3

GNU pop3d 0.10.3 er klar. Du kan laste det ned her  GNU pop3d 0.10.3

ENDRINGER/HISTORIE

12/mai/2017 0.10.3 Jørgen Thomsen [email protected], http://jth.net/virtual.html

        Nye funksjoner
        ------------
        Deaktivering Status: header støtte (RFC 2076)
        Lagt parameter s- til brukernavn (se README fil)

22/mars/2014 0.10.2 Jørgen Thomsen [email protected], http://jth.net/virtual.html
	Nye funksjoner
	------------
	IPv6-støtte med konfigurasjon --disable - ipv6 og under kjøring --ipv6

	POP3S støtte med --aktiver-POP3S
		Vil installere arbeider konfigurasjon av xinetd bruke tunnel inkl. Prøven sertifikatet og nøkkelen
		Forutsetning: xinetd og tunnel installert
        Støtte for kryptert (ved C krypten) passord i virtuelle domener (ikke APOP da)

	Daemon start støtte utvidet enable-service = SERVICE
		nå bære konfigurasjon for sysvinit, init, event.d, systemd og enkeltbruker inetd, xinetd
                (Sannsynligvis ikke perfekt :) Sjekk installasjonen)

	Installasjon rot kan spesifiseres under konfigurasjon --enable-rootdir = DIR samt
	av make install ROOT = DIR

	avinstallere funksjonen lagt til

	pop3client.pl program for enkel prøving og stresstesting av en POP3-server
	mkpwd.pl for å lage og/eller kryptering av passord for virtuelle domener som er kompatible med glibc krypten ()

	drepe -SIGUSR2 vil vise noen statusvariabler i syslog
	Daemon: Displayet teller og PIDs av aktive barn, verdien av flagg bestemme oppsigelse, samt antall økter til nå.
	Child: visningstiden som brukes og kommandoer for å opprettholde forbindelsen fra IP-adresse

	Endringer
	-------
	extra.c/pop3_syslog kan logge til standardfeil (debug = 0x1yy).
	Individuelle syslog prioriteringer holdt i pop3_syslog.
	Mer logging via pop3_syslog.
	Redusert bruk av bibliotekets rutiner pop3_syslog for bedre stabilitet.
	Foreldet gethostbyname og gethostbyaddr erstattet av getaddrinfo og getnameinfo
	inet_ntoa erstattet av inet_ntop
	Et opphold på 1 sekund for å returnere BAD LOGIN for å avskrekke roboter som sjekker for svake passord.

	Hjelpetekster ryddet opp og forbedret.

	Forbedret installasjon script
	- håndtering av ekstra daemon startsystemer
	- konfigurasjon av POP3S ved hjelp av tunnel + xinetd
	- spesifisering av installasjons rotkatalogen
	- IPv6-støtte
	- brannmur firewalld støttes
	- avinstallere funksjonen
	Vær så snill, oppmerksom på at testing av installasjon har bare blitt gjort på Linux Fedora 12, 15, 18, 20, så det kan ikke være perfekt i alle tilfeller.
	Som GNU-pop3d er bare ett program uten nødvendige konfigurasjonsfiler kan manuelt legges i / usr / local / sbin / gnu-pop3d
	og inngått oppstartsskriptet av systemtjenester

	MD5 kode oppdatert (Gray Watson) å legge til støtte for stor/liten endian
	Nyeste GNU config.guess og config.sub installert.

	bugs fast
	----------
	Mer robust barnet management (opptatt server, DoS-angrep).
	Siste endringer i krypten eller strcmp funksjoner tilsynelatende forårsaket en uendelig loop når du logger inn i visse tilfeller.
	Logg inn med stjålet krypterte passord i virtuelle domener forhindret.


07/februar/2011 0.9.13 Jørgen Thomsen [email protected], http://jth.net
        Syslog logging fra pop3_signal signal HANDLER rutinen forårsaket hengende prosesser, spesielt i løpet av DoS angrep eller
        av mange samtidige klienter. Delvis fast (kan fortsatt oppstå ved bruk av denne biten (08) i debug maske)

        Feilretting: visse påloggingsmetoder fungerte (David B. Cortarello)

        De globale barne telleren child_procs endret fra int til 'flyktige sig_atomic_t' for å redusere muligheten for
        det ikke blir oppdatert riktig.
        Telleren var ikke alltid minsket slik at programmet brukes bare ett tilfelle, da max barn
        prosesser ble feilaktig nådd.

        Nyeste GNU config.guess og config.sub installert.

        Makefile.in og configure.in forbedret og støtte for påvisning av Atom-prosessorer tilsatt og mer støtte for
        tjeneste installasjon (/etc/init)

        RFC katalog slettet som RFC er lett tilgjengelig på internett

26/Apr/2010 0.9.12 Jørgen Thomsen [email protected], http://jth.net
	Mulig dobbelt fri for postboksnavnet variabel i spesielle feilsituasjoner for eksempel ved to samtidige pålogginger til
	samme postboks.

	config.guess og config.sub mangler fra distribusjons

	Lagt til en start melding til syslog
18/Apr/2010 0.9.11 Jørgen Thomsen [email protected], http://jth.net
        Programmet er opprettholdt på en Linux Fedora plattform uten testing tilgjengelig på andre plattformer, men
        med et forsøk på å unngå Linux spesifikke funksjoner.

        Forbedringer til configure skriptet inkludert 64 bit CPU støtte.

        Den Nagle (TCP No Delay) algoritmen har blitt deaktivert forårsaker en stor forbedring i hastighet.

        SO_REUSEADDR tilsatt til daemon-kontakt for umiddelbar gjenbruk av kontakten etter en ny start.

        Signalhåndtering forbedret for å være mer flyttbar (sigaction) og usikre anrop er fjernet fra signalbehandleren. Avslutning
        etter et signal skal nå være mye bedre å ikke forlate mailbox.lock filer rundt.

        * Feil * sokken variabel i barnet var alltid -1 og ikke selve kontakten (sock2) så pop3_signal i et barn ikke lukke kontakten.
        Fjernet sync () kaller som f.eks kopierer store filer til en USB-disk ville føre til en hang til alle data ble skrevet til disken (flere minutter)

        Betinget kompilering av debugging uttalelser fjernet som overhead er så liten.
        Den feilsøking parameter er blitt endret til en 2-hex-sifret bit mask (barn, nissen) og ytterligere
        debugging uttalelser er satt inn.

        MAXHOSTNAMELEN økt til 128 på grunn av Idna domenenavn

        gnu-pop3d fil for /etc/event.d inkludert

        mannen siden oppdateres

18/juli/2007 0.9.10 Jørgen Thomsen [email protected], http://jth.net
        FCNTL lås på postkassen endret til å skrive lås
        sync () alltid kalt ved opplåsing
        lese data fra klient når timeout aktivert (velg) nå sjekker for ødelagte rør også forårsaker umiddelbar exit,
        hvis klienten forsvinner plutselig.
        Når postkasse ble kopiert til ny postkasse, kan noen MTAer (e, g, postfix) fortsette å skrive til den gamle postkassen.
        Nå tomt gamle postboks holdes så mailbox.old og slått sammen med den nye hvis ikke tom på neste løp.

24/august/2003 0.9.9-5 Jørgen Thomsen [email protected], http://jth.net
        Testen for topptekst var ikke strenge nok Status: og X-Status: anses lik (Jem Berkes)
        Kommandolinjer ble ikke satt sammen til en linje som er mottatt som separate TCP-pakker (Nicolas Gregoire)

18/Jan/2003 0.9.9-4 Jørgen Thomsen [email protected], http://jth.net
        Støtte for Postfix X-Original-To: header linje for Message Disposition Notification.
        UIDL beregningen vil ikke lenger omfatte røntgen headerlines, da de kan legges til ved noen mailreaders.
        '%' Er tillatt som skilletegn i stedet for @ i en virtuell brukernavn (e-postadresse)
        Mindre interne endringer.
        Ytterligere støtte for virtdomain.pl av forfatteren (hvordan finne postkassen)
18/oktober/2002 0.9.9-3 Jørgen Thomsen [email protected], http://jth.net/
	Korrigert en feil når en dårlig postkasse ikke inneholder 'From' som første linje.
05/Sep/2002 0.9.9-2 Jørgen Thomsen [email protected], http://jth.net/
        Reparasjonen for disk full hindret endrede postkasse som skal skrives til .new filen. Det ble beholdt uforandret
04/Sep/2002 0.9.9-1 Jørgen Thomsen [email protected], http://jth.net/
        Hvis postkassen ikke avslutte med et linjeskift (hvis krasjet mens du skriver en melding inn i det)
        en uendelig løkke var oppstått. Hvis postboksen er endret av GNU pop3d, vil det være løst.
        Når disken ble full når du skriver den nye postkassen det ikke ble funnet og den nye postkassen ble avkortet
19/august/2002 0.9.9 Jørgen Thomsen [email protected], http://jth.net/
        Kompatibilitet med vm-pop3d passwd filer introdusert (ikke testet)
        Lagt elegante stopp ved å fange de signaler (SIGHUP og SIGTERM).
        Den endelige innslag og versjonsnummeret endret til 0.9.9
19/oktober/2001 Jørgen Thomsen [email protected], http://jth.net/
        Lagt Message Disposition Notification (kvittering, RFC 2298)
        Lagt konfigurere alternativer for å unngå redigering config.h i de fleste tilfeller
        Endret oppdatering av postkassen fra å kopiere i filen for å skape en ny fil (mailbox.new)
        hvis nødvendig, og forbedret kopiering inne i filen. Dette forbedrer hastigheten veldig spesielt for webmail programmer.
        Introdusert støtte for den klassiske Status: header linje RFC 2076 (understøttet av ekv Null Webmail
        http://nullwebmail.sourceforge.net/)

17/oktober/2001 Jørgen Thomsen [email protected], http://jth.net/
        Lagt en gammel lapp for bedre håndtering av barn behandler opprettelse og død.
        Nå barn prosesser er opprettet etter behov og bare den overordnede prosessen er permanent.

VirtDomain 1,05

Det web GUI-grensesnitt er funksjonell for både standard Postfix virtuelle domener og mine smaks: j-te virtuelle domener. Den kommer som en enkelt Perl program, som noen kalles fra kommandolinjen for å skape en virtuell domene og fra webserveren til å administrere den. Krever nylige utgivelsen av Postfix  VirtDomain 1,05

#!/usr/bin/perl-w
# ************************************************* *********************
#
# Utility for å administrere virtuelle domener i postfix (både standard
# enere og de som er definert i http://jth.net/virtual.html)
#
# Dette programmet bør ligge i /var/www/cgi-bin/virtdomain.pl med global
# Lese og kjøre rettigheter (chmod o+rx/var/www/cgi-bin/virtdomain.pl).
#
# Husk å definere $hoved :: postfixadmin nedenfor!
#
# Det første argumentet til programmet bestemmer dens funksjon:

# CREATE: ring fra kommandolinja som root: lage virtuelle domenenavn ved å oppdatere
# /etc/postfix/virtual og virtual_regexp
# Og oppretter /etc/virtuell/domene/passwd og/var/spool/virtuell/domene
# LAG <domenenavn> <virkelige bruks administrering domenet>
# <Passwd> [postfiks]

# SLETT: ringe fra kommandolinja som root: slette virtuelt domene ved å oppdatere
# /etc/postfix/virtual og virtual_regexp
# Og sletting /etc/virtuell/domene/passwd og/var/spool/virtuell/domenet
# Samt .forward filer i administratorene homedir
# SLETT <domenenavn> <virkelige bruks administrering domenet> <passwd>

# <Blank>
# MAILBOUNCE
# Hvis kalles fra postfix som mail til bruker@domene e-posten på STDIN vil bli behandlet
# I henhold til oppsettet av brukeren i /etc/virtuell/domene/passordet.
# MAILBOUNCE: sprette e-post til ukjente brukere ellers lagre i postmester postkasse

# <Blank> hvis kalt fra postfiks som e-post til postmaster@domene eller <postfixadmin + master>
# Med emnet "*** Virtual domene oppdatering ***" og linje 1 er trans = UPDATE ....
# En bruker vil bli opprettet/oppdatert/slettet
# Ellers prosessen epost normalt som ovenfor

# <Blank>: Hvis kalles fra en webserver viser nettsider for å oppdatere bruker
# Base i et virtuelt domene e, g, http://jth.net/cgi-bin/virtdomain.pl

#
# Som grunnlag brukeren postmester må defineres for domenet.
# I/etc/virtual/domene/passwd fil. De bruker og gruppe-ID som
# Samt homedir fra denne brukeren brukes for det virtuelle domenet.
# For hver virtuell bruker filen homedir/.forward+bruker - domenet er opprettet.
# Webserveren skal ha lesetilgang til disse filene, samt
# /etc/virtual/domene/passwd fil.
# GNU pop3d deamon som vedlikeholdes av meg er å støtte dette
# Virtuell domene gjennomføring.
#
# Ved hjelp av dette programmet for å levere post for j-te stil domener er ikke egnet for
# Et høyt volum system, som lasting Perl tolk
# Har en ganske høy første CPU-bruken i forhold til dette programmet (90% av total kjøretid).
# Men ved å bruke bestemmelsen for hooking i et annet program for å levere posten
# Kan være nyttig. En awk verktøyet kan anvendes i stedet virtual.awk
#
# © 2002 Jørgen Thomsen [email protected], http://jth.net/virtual.html
# 1,01 2002-08-22 offisielle utgivelsen
# 1,02 2003-01-24 Støtte for nye virtual_alias_map parameter og relay_domains atferd
# 1,03 2003-04-26 Bedre språkstøtte og fikse webmail URL i info
# 1,04 2003-05-30 Tegn | og "ble fjernet fra fremover i inngangs Nå bruker skal ikke gå inn |., men starter kommandoer med"
# 1,05 2004-08-06 Endringer bestemt til jth.net: /var/www/perl, kropp bakgrunn endret, brukes ingen CGI
#
# ************************************************* *********************

Gamle, men i utgangspunktet fortsatt gyldig

Endringer i GNU pop3d 0.9.8
(inkludert noen endringer som ikke er relatert til virtuelle domener f.eks  POP-før-SMTP)

Basert på mine egne behov Jeg har laget en patch for GNU-pop3d vers. 0.9.8
Jeg har også lyttet til noen av forespørsler på GNU pop3d postliste.
Plasteret kan brukes også hvis du ikke trenger den virtuelle domene ting.

Basicallly jeg tok virtuell-oppdateringen av  Jeremy Reed, gjorde det mer generelle og lagt mine egne GNU pop3d endringer:

  • slik at virtuelle domenebrukere til å være reelle brukere også med postkasser andre steder
  • tilsette apop støtte for virtuelle domenet brukere
  • legge standarddomene skal strykes hvis det brukes for den virkelige domenenavn f.eks “[email protected]” -> “brukerID”
  • tilsatt logging av ikke-null feilkoder av kommandoer
  • tilsatt UIDL commmand gir unike-IDer for alle meldinger
  • korrigert ved beregning av meldingsstørrelsen
  • renset koden litt, særlig frigjøre allokert hukommelse
  • J6: tilsatt”fra <IP-adresse>” til den logmessage ‘Innkommende forbindelse åpnes’
  • J7: tilsatt ny msg “autentisert IP <IP-adresse>” til den maillog for POP-før-SMTP-støtte
  • J8: fjernet (kommentert ut) den maillog msg “autentisert IP <IP-adresse>”
    tilsatt”fra <IP-adresse>” til den logmessage ‘Bruker% s pålogget med postboksen% s’, slik at POP-før-SMTP verktøy av Bennett Todd kan anvendes uten modifisering

Jakten på en brukers postboks utføres som

  1. søk MAILSPOOLHOME (f.eks/home/bruker/Mail/postkasse)
  2. søk _MAILDIR (f.eks/var/mail/bruker)
  3. søke VIRTUAL_MAILDIR (for eksempel/var/spool/virtuell/domene/bruker)
  4. gi opp og bruke/dev/null

Patching GNU pop3d

I stedet for alle å bruke lappene har jeg gjort det.

  1. Last ned lappet kilde  gnu-pop3d-0.9.11.tar.gz
  2. Opprett config.h fil ved
    ./configure
    eller
    ./configure -enable-ip-basert virtuell
    (Se også en annen samtale nedenfor)
  3. Hvis trengte/ønsket definere MAILSPOOLHOME (for eksempel “/Mail/postkasse”) og/eller DEFAULT_DOMAIN i config.h
  4. Kompiler ved å utføre gjøre

De tekniske endringer

  • formatet for den virtuelle domene passordfilen har blitt gjort lik standard /etc/ passwd filformat
    brukernavn: passord: bruker-id: (gruppe id) 🙁 brukernavn): postkasse katalogen: (skall)
    som tillater det å bli kontrollert av den pwck kommando f.eks
    pwck -r /etc/virtual/domain.com/passwd
    de vedlagte i parentes felt brukes ikke. Postkasse katalogen bør være “. hvis den ikke brukes
  • APOP støtte ble deaktivert i 0.9.8 distribusjon. Det aktiveres bortsett fra testen, som en APOP brukeren ikke skal få lov til å bruke bruker kommandoen for å logge inn. Dette er ikke logisk som brukere kan bruke ulike postprogrammer for å sjekke e-post. Noen av disse kan ikke støtte APOP
  • den opprinnelige virtuelle patch bruker krypterte passord i passwd filen. For å støtte APOP fra den samme filen passordene er nå ukryptert
  • den unike-id av en melding blir beregnet som en MD5-sammendrag av den opprinnelige “Fra“-line og alle header linjene exluding behovet for den valgfrie Message-ID: ningsanordningene på spillefeltet
  • linjebufferlengde øket fra 80 til 160 tegn for å unngå å lese en linje med 2 fgets-anrop i de fleste tilfeller. Folk som bruker proporsjonale skrifter kan lett overstige 80 tegn/linje
  • lagt til “UIDL” til de funksjonene som vises av CAPA kommandoen
  • tilsatt meldingen “autentisert IP abcd” til maillog samt IP-adresse til “Innkommende forbindelse åpnes” for POP-før-SMTP-støtte

Implementering av virtuelle domener i Postfix og GNU pop3d

Grunnen til ikke å bruke standard Postfix virtuelle domener er todelt:
1) denne implementeringen fokuserer på virtuelle domener med hver sin egen administrator
2) Følgende begrensninger (sitat fra Postfix dokumentasjon (min utheving)):
Denne agenten ble opprinnelig basert på postfix lokal levering middel. Modifikasjoner hovedsakelig besto av å fjerne kode som enten var ikke aktuelt, eller det var ikke trygg i denne sammenheng: aliaser,  ~ bruker/.forward filer, levering til “kommandoen” eller til/fil/navn

Det følgende viser en måte å implementere en virtuell domene, kvt.dk, i Postfix og GNU pop3d.
En ekte bruker kvt_dk er definert på systemet. Hjemmet katalog av denne brukeren inneholder noen data for den virtuelle domene  kvt.dk.
To brukere er definert kvt.dk[email protected] (virtuell bruker bare) og [email protected] (reell brukermedvirkning kvt_dk på postserver)
Gjennomføringen er basert på Redhat Linux 7.0

GNU pop3d

Jeremy siv opprinnelige beskrivelse av den virtuelle patch

Den virtuelle patch forutsetter følgende filstrukturer:
/etc/virtual/<domene>/passwd
for definisjonen av brukere, passord og postkasse katalog

I dette eksempelet lage katalogen  /etc/virtual/kvt.dk

Standard postkasse for en virtuell bruker er
/var/spool/virtuell/<domene>/<bruker>

I dette eksempelet lage katalogen  /var/spool/virtual/kvt.dk

På min server posten er lagret i brukerens hjemmekatalog /home/ <usr> /Mail/ postboks krever definisjonen av MAILSPOOLHOME i config.h.
Jeg har også kun én IP-adresse og vil ha min hoveddomenet “jth.net” for å automatisk bli fjernet fra post forespørsler til GNU pop3d.

Jeg genererte config.h fil med kommandoen

./configure enable-64bit enable-maildir -enable-default-domain = jth.net enable-language = DA

Før kompilering GNU pop3d jeg sørget følgende konstanter ble definert i config.h:

#define MAILSPOOLHOME "/Mail/postkasse" 
#define USE_VIRTUAL en 
#define DEFAULT_DOMAIN "jth.net ”

/etc/virtual/kvt.dk/passwd

Lag denne filen med følgende innhold
kvt: kvtpasswd: 601: 100: kvtname: /home/kvt_dk/: 
abc: abcpasswd: 601: 100: abcname:.:

601 er en bruker-ID for brukeren kvt_dk. 100 er groupid (gruppe post på serveren min). Den ” homedir for abc er bare å gjøre pwck lykkelig.
Mail for [email protected] leveres til/home/kvt_dk/Mail/postkasse (se nedenfor).
Mail for [email protected] leveres til/var/spool/virtual/kvt.dk/abc

Hvis du stoler på kvt_dk brukeren, og deretter opprette passwd fil i hjemmekatalogen til brukeren kvt_dk. og koble den inn i /etc/virtual/kvt.dk katalogen
ln -s/home/kvt_dk/passwd/etc/virtual/kvt.dk/passwd

Legg merke til at det kan være en sikkerhetsrisiko her, fordi GNU pop3d vil kjøre med noen brukerid angitt i passwd filen. Hvorvidt dette er en reell trussel gjenstår å bli analysert.

Eieren og rettigheter på filer og kataloger bør være kvt_dk.mail og 700 f.eks
chmod 700 /etc/virtual/kvt.dk /etc/virtual/kvt.dk/passwd /var/spool/virtual/kvt.dk
chown kvt_dk.100 /etc/virtual/kvt.dk /etc/virtual/kvt.dk/passwd /var/spool/virtual/kvt.dk

Postfix

Denne implementeringen kan være mer komplisert enn andre, men det gir forskjellige administratorer av hver virtuelle domenenavn holde alt i hjemmekatalogen til domeneadministratoren.

/etc/postfix/main.cf

recipient_delimiter = + 
home_mailbox = Mail/postboks 
allow_mail_to_commands = termin 
allow_mail_to_files = fremover

/ Home / kvt_dk

RW-r - r-- 1 kvt_dk post 12.12.10 02:52 .forward 
RW-r - r-- 1 kvt_dk post 25.12.10 01:55 .forward + abc--kvt.dk 
-rw- r - r-- 1 kvt_dk post 20.12.10 02:53 .forward + kvt--kvt.dk

/home/kvt_dk/.forward

| "exit 67"

Sprette en melding ikke for [email protected] eller [email protected]

/home/kvt_dk/.forward+abc-kvt.dk

| /usr/local/bin/virtual

Levere all post for [email protected] til den virtuelle domenenavn postkasse for abc endre Levert til: header linje til det riktige.

/home/kvt_dk/.forward+kvt-kvt.dk

/home/kvt_dk/Mail/postkasse

Levere all post for [email protected] til postkassen for kvt_dk

/etc/postfiks/virtuell

kvt.dk noe 
[email protected] postmester 
[email protected] j-te

De reelle brukere: postmaster og j-te skal motta all post for postmaster og webansvarlig for den virtuelle domene

/etc/postfiks/virtual_regexp

/^(.+)@(.+\.)?(kvt\.dk)$/ kvt_dk + $1 - $2 $3

Dette uttrykket vil føre postfix til å levere noen post med adresser [email protected] og [email protected] til den virkelige bruker kvt_dk holde den opprinnelige mottakeren konvolutt som en forlengelse av den nye mottakeradresse.

/usr/local/bin/virtual

awk -F: -f /usr/local/bin/virtual.awk

/usr/local/bin/virtual.awk

# J. Thomsen 2002-04-11 Postfix verktøyet 
# /usr/local/bin/virtual.awk 

# Brukes av Postfix for å levere post til en GNU-pop3d virtuell domene 
# postkassen. 

# Postfix vil bruke dette verktøyet for å levere en melding til den lokale 
# postboks omskriving Levert til header linje til den opprinnelige mottakeren 
# adresse. 
# 2002-04-11 Fix avsender linjer i msg legeme og legge tom linje for å msgs for å sikre separasjon av meldinger 
#