Wirtualne domeny za pomocą GNU pop3d i Postfix

21 Dec 11:43 am


Original: http://jth.net/virtual.html
Copyright: Jørgen Thomsen

GNU pop3d 0.9.13

GNU pop3d 0.9.13 jest gotowe. Możesz ją pobrać tutaj GNU pop3d 0.9.13

ZMIANY / Historia

Nadchodzące wydanie
xx/Feb/2013 0.9.14 Jørgen Thomsen jth@jth.net http://jth.net,

Program działa bez zarzutu przez rok.
Potrzeba czyszczenia procedurę instalacyjną, która stara się wykryć i zainstalować nowy w różnych środowiskach wynalazłem.

Opcjonalna obsługa IPv6 dodaje. Konfigurowanie w czasie kompilacji z – enable-ipv6 i używać – IPv6 przełącznik w czasie wykonywania

Poszczególne priorytety syslog przechowywane w pop3_syslog.

Tekstu pomocy oczyścić

07/Feb/2011 0.9.13 Jørgen Thomsen jth@jth.net http://jth.net,
Syslog logowania z sygnału teleskopowa rutynowej pop3_signal Spowodowany wiszące procesy zwłaszcza podczas ataków DoS lub
przez wielu jednoczesnych klientów. Przeważnie stałe (mogą wystąpić podczas korzystania cichu ten bit (08) w masce debugowania)

Fix: Niektóre metody logowania nie działa (David B. Cortarello)

Globalne child_procs dziecko przeciw zmienione z int do “lotnych sig_atomic_t ‘zmniejszyć możliwością
nie zostały zaktualizowane.
Licznik nie zawsze był zmniejszany niedz Program użyty tylko jeden przykład, kiedy dziecko Max
procesy zostały nieprawidłowo osiągnięte.

Ostatnia GNU config.guess i config.sub zainstalowany.

Makefile.in i configure.in i ulepszone wsparcie dla wykrywania procesorów Atom i dodano więcej wsparcia
Usługa instalacji (/ etc / init)

RFC usunięta katalogu jako RFC są łatwo dostępne w Internecie

26/Apr/2010 0.9.12 Jørgen Thomsen jth@jth.net http://jth.net,
Możliwa podwójna bez nazwy skrzynki błędu zmiennej w szczególnych sytuacjach, np. w dwóch jednoczesnych logowań do
samej skrzynki pocztowej.

config.guess i config.sub brakuje z dystrybucji

Dodano wiadomość startowego syslog

18/Apr/2010 0.9.11 Jørgen Thomsen jth@jth.net http://jth.net,
Program jest utrzymywana na platformie Linux Fedora bez badań dostępny na innych platformach, ale
z próbą uniknięcia Linux specyficzne cechy.

Poprawki do skryptu configure, w tym 64 bitowego procesora wsparcia.

Nagle (TCP nr Delay) algorytm został wyłączony powoduje dużą poprawę szybkości.

SO_REUSEADDR dodany do gniazda demona do natychmiastowego ponownego użycia gniazdka po restarcie.

Ulepszona obsługa sygnału jest bardziej przenośne (sigaction) i niebezpieczne rozmowy usunięte z obsługi sygnału. Wypowiedzenie
po sygnale powinno być teraz o wiele lepiej, nie pozostawiając pliki mailbox.lock wokół.

Bug * * sock zmienna w dziecku zawsze -1, a nie rzeczywista socket (sock2) tak pop3_signal u dziecka nie zamyka gniazdo.
Usunięto sync () wywołuje jak np. kopiowania dużych plików na dysk USB spowodowałoby powiesić aż wszystkie dane zapisane na dysku (kilka minut)

Warunkowa kompilacja wypowiedzi debugowania usunięte jako koszt jest tak mały.
Parametry debugowania został zmieniony na 2-cyfrową maską bitów hex (dzieci, demon) oraz dodatkowe
Oświadczenia debugowania zostały wstawione.

MAXHOSTNAMELEN zwiększona do 128 z powodu IDNA nazw domen

gnu-pop3d plik / etc / event.d wliczone

aktualizowania stronę

18/Jul/2007 0.9.10 Jørgen Thomsen jth@jth.net http://jth.net,
Blokada fcntl na skrzynki zmieniony blokady zapisu
sync () zawsze nazywano unlock
odczytać dane z czasu oczekiwania klienta, gdy włączone (wybierz) sprawdza teraz zbyt pękniętą rurę, powodując natychmiastowe wyjście,
jeśli klient nagle zniknie.
Gdy skrzynka została skopiowana do nowej skrzynki pocztowej, niektóre MTA (e, g, postfix) może kontynuować pisanie do starej skrzynki.
Teraz puste stare skrzynki jest przechowywana jako mailbox.old i połączył się z nowym, jeśli nie puste w następnym okresie.

24/Aug/2003 0.9.9-5 Jørgen Thomsen jth@jth.net http://jth.net,
Test dla linii nagłówka nie było dostatecznie ostre Status: X-Status: za równe (Berkes JEM)
Linii poleceń nie były montowane do jednej linii, jeśli odbierane jako oddzielny pakietów TCP (Nicolas Gregoire)

18/Jan/2003 0.9.9-4 Jørgen Thomsen jth@jth.net http://jth.net,
Wsparcie dla Postfix X-Original-To: nagłówek dla Disposition Notification.
Obliczenia nie będą już zawierać X-UIDL nagłówki, ponieważ mogą one być dodawane przez niektórych czytelników pocztowych.
‘%’ Jest dozwolony jako separatora zamiast @ w wirtualnej nazwę użytkownika (adres e-mail)
Mniejsze wewnętrzne zmiany.
Dodatkowe wsparcie dla virtdomain.pl przez autora (jak znaleźć skrzynkę pocztową)
18/Oct/2002 0.9.9-3 Jørgen Thomsen jth@jth.net, http://jth.net/
Poprawiono błąd, gdy źle mailbox nie zawierał “Z” w pierwszej linii.
05/Sep/2002 0.9.9-2 Jørgen Thomsen jth@jth.net, http://jth.net/
Poprawka dla diskfull Powstrzymano zmienił skrzynkę być napisana do. Nowy plik. Został on pozostać bez zmian
04/Sep/2002 0.9.9-1 Jørgen Thomsen jth@jth.net, http://jth.net/
Jeżeli skrzynka pocztowa nie zakończyła by do nowego wiersza (jeśli katastrofie podczas pisania wiadomości na nim)
pętla nieskończona, co dzieje. Jeśli skrzynka pocztowa jest modyfikowany przez GNU pop3d, zostanie on naprawiony.
Gdy dysk został zapełniony pisząc nową skrzynkę pocztową, nie został wykryty i nowa skrzynka pocztowa została obcięta
0.9.9 19/Aug/2002 Jørgen Thomsen jth@jth.net, http://jth.net/
Zgodność z vm-pop3d passwd plików Wprowadzono (nie w pełni przetestowane)
Dodane wdzięku przystanek łapiąc sygnał (SIGHUP i SIGTERM).
Ostatnie poprawki i numer wersji zmieniony na 0.9.9
19/Oct/2001 Jørgen Thomsen jth@jth.net, http://jth.net/
Dodane Disposition Notification (paragon reklamacji, RFC 2298)
Dodane skonfigurować opcje edycji config.h uniknąć w większości przypadków
Zmieniono aktualizację skrzynki od wewnątrz kopiowania plików do tworzenia nowego pliku (mailbox.new)
w razie potrzeby i poprawić kopiowanie wewnątrz pliku. To znacznie poprawia szybkość szczególnie dla programów webmail.
Wprowadzono wsparcie dla klasycznego statusu: header linia RFC 2076 (obsługiwane przez eq zerowej Webmail
http://nullwebmail.sourceforge.net/)

17/Oct/2001 Jørgen Thomsen jth@jth.net, http://jth.net/
Dodane starą poprawkę dla lepszej obsługi procesów tworzenia dzieci i śmierci.
Teraz procesy potomne tworzone są konieczne i tylko proces macierzysty jest trwałe.

Virt domeny 1:05

Web interfejs GUI jest funkcjonalny zarówno dla standardowych Postfix domen wirtualnych i mój smak: jth wirtualnych domen. To jest jak jeden program Perl, whcih jest wywoływany z linii poleceń, aby stworzyć wirtualną domenę i od serwera do administrowania to. Wymaga niedawne uwolnienie Postfix Virt domeną 1:05

# / Usr / bin / perl-w
# ************************************************* *********************
#
# Narzędzie do zarządzania wirtualnymi domenami w postfixa (zarówno standardowe
# Jak i te które określono w http://jth.net/virtual.html)
#
# Ten program powinien znajdować się w katalogu / var / www / cgi-bin / virtdomain.pl globalnie
# Czytaj i wykonywania prawa (chmod o + rx / var / www / cgi-bin / virtdomain.pl).
#
# Pamiętaj, aby zdefiniować $ główny :: postfixadmin poniżej!
#
# Pierwszy argument do kopalń deterministycznych programu jego funkcji:

# Tworzenie: zadzwonić z linii poleceń jako root: stworzyć wirtualną domenę poprzez aktualizację
# / Etc / postfix / virtual i virtual_regexp
# I tworzenia / etc / virtual / domena / passwd i / var / spool / virtual / domena
# Create
# [Postfix]

# DELETE: zadzwonić z linii poleceń jako root: Usuń wirtualny domeny poprzez aktualizację
# / Etc / postfix / virtual i virtual_regexp
# I usunąć plik / etc / virtual / domena / passwd i / var / spool / virtual / domena jako
# Oraz. Forward pliki administratora homedir
# DELETE domain>

# # MAILBOUNCE
# Jeśli wywołana z poczty Postfix do użytkownik @ domena jako e-mail na STDIN będą przetwarzane
# Według konfiguracji użytkownika w pliku / etc / virtual / domena / passwd.
# MAILBOUNCE: bounce mail do nieznanych użytkowników inaczej zapisać w postmaster mailbox

# Jeśli wywołana postfix jak mail do postmaster @ domena lub # Z przedmiotu “Virtual domeny *** aktualizacja ***” i linia 1 jest trans = UPDATE ….
# Użytkownik zostanie utworzony / zaktualizowany / usunięte
# W przeciwnym razie proces normalnie email jak wyżej

# : Jeśli wywołana z serwera WWW, wyświetla strony internetowe w celu aktualizacji instrukcji
# Bazowa w wirtualnej domeny e, g, http://jth.net/cgi-bin/virtdomain.pl

#
# Jako bazy użytkowników postmaster muszą być zdefiniowane dla domeny.
# W pliku / etc / virtual / domena / passwd. Identyfikatory użytkowników i grup, jak
# A a homedir od użytkownika służy do domeny wirtualnej.
# Dla każdego wirtualnego użytkownika plik homedir / forward użytkownika + -. Domeny jest tworzona.
# Serwer WWW powinien mieć dostęp do odczytu tych plików, jak również
# / Etc / virtual / domena / passwd.
# GNU pop3d deamon utrzymane mnie wspiera w tym
# Wirtualna realizacja domeny.
#
# Za pomocą tego programu do dostarczania poczty do stylu domen j-nie nadaje się do
# System wysokiej głośności, a ładowanie interpreter Perla
# Ma dość wysokie początkowe użycie procesora w porównaniu do tego programu (90% całkowitego czasu pracy).
# Jednak użycie prowizji podpinania do innego programu do dostarczenia poczty
# Może być przydatne. Do narzędzia awk może być stosowany zamiast virtual.awk
#
# © 2002 Jørgen Thomsen jth@jth.net, http://jth.net/virtual.html
# 01:01 22.08.2002 Oficjalne wydanie
# 01:02 24.01.2003 wsparcie dla nowych parametrów i virtual_alias_map relay_domains zachowań
# 01:03 26.04.2003 Lepsze wsparcie językowe i URL webmail poprawka w informacji
# 1.04 30.05.2003 Znaki | i “zostały usunięte z przodu na wejściu Teraz użytkownik nie wchodzi. | Ale polecenia zaczynają się od”
# 01:05 06.08.2004 Zmiany specyficzne jth.net: / var / www / perl, tło ciało zmieniło, nie stosować CGI
#
# ************************************************* *********************

Stary, ale w zasadzie nadal aktualne
Zmiany GNU pop3d 0.9.8
(W tym pewnych zmian nie związanych z wirtualnymi domenami np. POP-przed-SMTP)

Na podstawie moich własnych potrzeb zrobiłem poprawkę dla GNU Vers pop3d. 0.9.8
Ja też słuchałem niektórych wniosków na liście pop3d GNU mailingowej.
Plaster może być stosowany, więc jeśli nie musisz wirtualnej rzeczy domeny.

Basicallly wziąłem virtual-patch Jeremy Reed, staje się on bardziej ogólny i dodał własne GNU zmiany pop3d:

Umożliwiając wirtualne użytkownicy domeny być prawdziwi użytkownicy skrzynek pocztowych, gdzie indziej też
APOP dodając wsparcie dla wirtualnych użytkowników domeny
dodanie domeny domyślnej być usunięte, jeśli są wykorzystywane do prawdziwego np. domeny “Userid@domain.com” -> “userid”
dodano rejestrowanie niezerowych kodów błędów rozkazów
dodano UIDL commmand zapewniający wyjątkowy identyfikatorów dla każdej wiadomości
poprawiono obliczanie rozmiaru wiadomości
czyszczone podania kodu trochę, zwłaszcza uwolnienie przydzieloną pamięć
j6 dodaje: “od ” do logmessage “przychodzące połączenie otwarte”
j7: dodano nowe wiad. “przysięgłe IP ” do maillog POP przed SMTP wsparcia
j8: usunąć (komentarzu) msg ​​maillog “przysięgłe ”
dodano “z” do logmessage “Użytkownik% s zalogowany na skrzynki% s”, tak, że POP-przed-SMTP narzędzie Todd Bennett może być stosowany bez modyfikacji

Szukaj skrzynki użytkowników odbywa się za

Poczta szukaj POOL (np. / home / user / mail / skrzynki)
szukaj _MAILDIR (np. / var / mail / użytkownik)
VIRTUAL_MAILDIR wyszukiwania (np. / var / spool / virtual / domena / użytkownik)
zrezygnować i / dev / null

Łatanie GNU pop3d

W zamiast wszyscy stosowania plastrów zrobiłem to.

Pobierz załataną źródło gnu-pop3d-0.9.11.tar.gz
Utwórz plik config.h przez
. / Configure
lub
. / Configure – enable-ip-wirtualny
(Więc inne połączenie se poniżej)
W razie potrzeby / chciał zdefiniować Pool Home mail (np. “/ mail / mailbox”) i / lub default_domain w config.h
Skompilować przez wykonującego

Zmiany techniczne

Format pliku haseł domeny wirtualnej dokonano równa jest / etc / passwd formacie pliku
Nazwa użytkownika: Hasło: ID użytkownika: (Group ID): (nazwa użytkownika): katalog skrzynka pocztowa: (shell)
Mógł on być sprawdzany przez polecenia np. pwck
pwck-r / etc / virtual / domain.com / passwd
Pola w nawiasach nie są używane. Katalog skrzynka powinna być “.” jeżeli nie są używane
Wsparcia APOP została wyłączona w 0.9.8 dystrybucji. Jest reenabled oprócz testu, że na użytkownika APOP nie powinny być dopuszczone do korzystania z polecenia użytkownika do logowania. To nie jest logiczne, ponieważ użytkownicy mogą korzystać z różnych programów pocztowych, aby sprawdzić pocztę. Niektóre z nich mogą nie obsługiwać APOP
Oryginalny wirtualny Poprawka używa zaszyfrowanych haseł w pliku passwd. W celu wsparcia APOP z tego samego pliku hasła są teraz niezaszyfrowany
niepowtarzalny identyfikator wiadomości jest obliczana jako MD5 na początkowym “Z” linii i wszystkie nagłówki exluding potrzebę zapytań Message-ID: pole
Zwiększona długość bufora linia od 80 do 160 znaków, aby uniknąć czytając wiersz z 2-fgets wymaga w większości przypadków. Osoby korzystające z czcionek proporcjonalnych mogą łatwo przekroczyć 80 znaków / wiersz
dodanej “UIDL” do możliwości pokazanych przez polecenie CAPA
dodano komunikat “przysięgłe IP abcd” do maillog jak również adres IP na “przychodzące połączenie otworzone” POP przed SMTP wsparcia

Wdrażanie wirtualnych domen w Postfix i GNU pop3d

Powodem nie stosując standardowe Postfix domen wirtualnych są dwojakie:
1) to realizacja Skupia się na wirtualnych domen z każdym jego administratora własnej
2) następujące ograniczenia (cytat z dokumentacji Postfix (podkreślenie moje)):
Środek ten został oparty na lokalnej Postfix środka dostarczającego. Zmiany polegały głównie na usunięciu kodu, że albo nie ma zastosowania lub nie był bezpieczny w tym kontekście:. Pseudonimy, ~ user / forward, dostawa do “|” lub polecenie do / pliku / nazwa
Poniżej przedstawiono jeden sposób Wdrożenie wirtualnej domeny kvt.dk, pop3d w Postfix i GNU.
Prawdziwy kvt_dk użytkownik został zdefiniowany w systemie katalog domowy użytkownika zawiera pewne dane dla domeny wirtualnej kvt.dk.
Dwóch użytkowników są określone w kvt.dk: abc@kvt.dk (wirtualny użytkownik tylko) i kvt@kvt.dk (real kvt_dk użytkownika na serwerze poczty)
Realizacja oparta jest na RedHat 7.0

GNU pop3d
Oryginalny opis Jeremy’ego Reeda z wirtualnej patchem

Virtual poprawka zakłada następujące struktury plików:
/ Etc / virtual / / passwd
dla definicji użytkowników, haseł i katalogu skrzynki

W tym przykładzie utworzyć katalog / etc / virtual / kvt.dk

Domyślna skrzynka pocztowa dla wirtualnego użytkownika jest
/ Var / spool / virtual / /

W tym przykładzie utworzenia katalogu / var / spool / virtual / kvt.dk

Na moim serwerze poczta jest przechowywana przez użytkownika w / home / homedir / mail / mailbox wymaga zdefiniowania Pool Home mail w config.h.
Ja też mam tylko jeden adres IP i chce mój główny domeny “jth.net” być automatycznie usuwane z żądań pocztowych do GNU pop3d.

I wygenerowany plik config.h przez komendę

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

Przed kompilacją GNU pop3d Upewniłem się następujące stałe zostały zdefiniowane w config.h:

# Określenie Pool Home Mail “/ mail / poczty”
# Określenie USE_VIRTUAL 1
# Określenie default_domain “jth.net”
/ Etc / virtual / kvt.dk / passwd

Utwórz plik o następującej treści
KVT: kvtpasswd: 601:100: kvtname :/ home / kvt_dk /:
abc: abcpasswd: 601:100: abcname.:

601 jest userid z kvt_dk użytkownika. 100 jest GroupID (mail grupy w moim serwerze). ‘.’ homedir dla ABC jest tylko do pwck szczęśliwy.
Mail for kvt@kvt.dk jest dostarczana do / home / kvt_dk / mail / poczty (patrz poniżej).
Mail for abc@kvt.dk jest dostarczana do / var / spool / virtual / kvt.dk / ABC

Jeśli ufasz instrukcji kvt_dk, a następnie utworzyć plik passwd w katalogu głównym kvt_dk użytkownika. i połączyć go do / etc / virtual / katalog kvt.dk
ln-s / home / kvt_dk / passwd, / etc / virtual / kvt.dk / passwd

Zauważ, że może być zagrożeniem dla bezpieczeństwa, bo tu GNU pop3d wykona wszelkie userid określonej w pliku passwd. Czy jest to realne zagrożenie pozostaje do analizy.

Właściciel i uprawnienia na plikach i katalogach powinny być kvt_dk.mail i 700 ec
chmod 700 / etc / virtual / kvt.dk / etc / virtual / kvt.dk / passwd / var / spool / virtual / kvt.dk
kvt_dk.100 chown / etc / virtual / kvt.dk / etc / virtual / kvt.dk / passwd / var / spool / virtual / kvt.dk
Postfix

Ta implementacja mogą być bardziej złożone niż inne, ale pozwala na różne administratorzy każdej wirtualnej domeny utrzymując wszystko w katalogu administratora domeny.
/ Etc / postfix / main.cf
recipient_delimiter = +
home_mailbox = mail / mailbox
allow_mail_to_commands = w przód
allow_mail_to_files = w przód
/ Home / kvt_dk
-Rw-r – r – 1 email kvt_dk 12 grudzień 10 02:52 przodu.
-Rw-r – r – 1 email kvt_dk 25 grudzień 10 01:55 przodu abc + -. Kvt.dk
-Rw-r – r – 1 email kvt_dk 20 grudzień 10 02:53 przodu KVT + -. Kvt.dk
/ Home / kvt_dk. / Przód
| “Exit 67”

Bounce każdy komunikat lub nie dla abc@kvt.dk kvt@kvt.dk
. / Home / kvt_dk / do przodu + abc – kvt.dk
| / Usr / local / bin / virtual

Dostarczenia wszystkich wiadomości dla abc@kvt.dk do wirtualnej skrzynki pocztowej domeny dla abc zmieniając Delivered-To: wiersz nagłówka do właściwego.
. / Home / kvt_dk / do przodu + KVT – kvt.dk
/ Home / kvt_dk / mail / mailbox

Dostarczenia wszystkich wiadomości dla kvt@kvt.dk do skrzynki pocztowej kvt_dk
/ Etc / postfix / virtual
coś kvt.dk
postmaster@kvt.dk postmaster
webmaster@kvt.dk jth

Prawdziwi użytkownicy: postmaster i jth musi otrzymywać wszystkie poczty na postmaster i webmaster wirtualnej domeny
/ Etc / postfix / virtual_regexp
(. +)? (. KVT \ dk) (.. + \) / ^ @ $ / Kvt_dk + $ 1 – $ 2 $ 3

To wyrażenie spowoduje postfix aby dostarczać pocztę Adresy z x@kvt.dk i y@z.kvt.dk realnej kvt_dk użytkownika prowadzącego oryginalna koperta jako odbiorca. Rozszerzenie do nowego adresu odbiorcy
/ Usr / local / bin / virtual
awk-F:-f / usr / local / bin / virtual.awk
/ Usr / local / bin / virtual.awk
# J. Thomsen 11.04.2002 Postfix program
# / Usr / local / bin / virtual.awk
#
# Użyte przez Postfix do dostarczania poczty do domeny wirtualnej GNU pop3d
# Mailbox.
#
# Postfix będzie korzystać z tego narzędzia do dostarczania wiadomości do lokalnych
# Mailbox przepisywanie dostawy do wiersz nagłówka do pierwotnego odbiorcy
# Adres.
# 11.04.2002 Fix ‘Od’ linii w organizmie msg i dodać pusty wiersz do wiad., aby zapewnić oddzielenie wiadomości
#

Dostarczyć do domeny wirtualnej skrzynki np. abc@def.kvt.dk do / var / spool / virtual / kvt.dk abc /.
Delivered-To: z nagłówka jest modyfikowany, aby zawierać oryginalny adres odbiorcy koperty (po ewentualnej modyfikacji przez pseudonimy).

Comments are closed