Original:http://jth.net/virtual.html
2017-11-26 Jørgen Thomsen, [email protected] |
GNU pop3d 0.10.3 готовий. Ви можете завантажити його тут GNU pop3d 0.10.3
ЗМІНИ/ІСТОРІЯ 12/травень/2017 р. 0.10.3 Джордж Томсен [email protected], http://jth.net/virtual.html Нові можливості --------------- Вимкнення статусу: підтримка заголовка (RFC 2076) Додано параметр s- до імені користувача входу (див. Файл README) 22/мар/2014 0.10.2 Джордж Томсен [email protected], http://jth.net/virtual.html Нові можливості ------------ Підтримка IPv6 з конфігурацією - disable - ipv6 і під час виконання --ipv6 Підтримка POP3S за допомогою --enable-pop3s Встановить робочу конфігурацію xinetd, використовуючи stunnel incl. сертифікат і ключ зразка Необхідна умова: встановлено xinetd та stunnel Підтримка зашифрованих (за C крипту) паролів у віртуальних доменах (а потім не APOP) Daemon start support extended --enable-service = SERVICE тепер підтримує конфігурацію для sysvinit, init, event.d, systemd та single user inetd, xinetd (можливо, не ідеально :) Перевірте свою установку) Встановлення root можна вказати під час конфігурації --enable-rootdir = DIR, а також за допомогою make install ROOT = DIR додано функцію видалення Програма pop3client.pl для простого тестування та стрес-тестування сервера pop3 mkpwd.pl для створення та/або шифрування паролів для віртуальних доменів, сумісних з glibc crypt () вбити-SIGUSR2відображатиме кілька змінених станів у системному журналі Daemon: кількість показів і кількість активних дітей, значення прапора, що визначає припинення дії, а також кількість сеансів до цих пір. Дитина: використовується час відображення та команди для користувача, підключеного з IP-адреси Зміни ------- extra.c/pop3_syslog може тепер зареєструватися в STDERR (debug = 0x1yy). Індивідуальні пріоритети системного журналу зберігаються в pop3_syslog. Більше ведення журналу за допомогою pop3_syslog. Зниження використання бібліотечних процедур у pop3_syslog для підвищення стабільності. Застарілий gethostbyname і gethostbyaddr замінено getaddrinfo і getnameinfo inet_ntoa замінено на inet_ntop Затримка 1 секунди для повернення BAD LOGIN для запобігання перевірці роботів для слабких паролів. Довідкові тексти очищені та вдосконалені. Покращений сценарій установки - обробка додаткових систем запуску демонів - конфігурація pop3s за допомогою stunnel + xinetd - специфікація установки кореневого каталогу - Підтримка IPv6 - підтримується брандмауер firewalld - функція деінсталяції Будь ласка, зверніть увагу, що тестування встановлення було зроблено лише на Linux Fedora 12, 15, 18, 20, тому воно може бути не ідеальним у всіх випадках. Оскільки GNU-pop3d - це лише одна програма без необхідних файлів конфігурації, її можна вручну помістити в / usr / local / sbin / gnu-pop3d і увійшов до сценарію запуску вашого системного сервісу MD5-код оновлено (Gray Watson), додавши підтримку великого / маленького Endian Остання версія GNU config.guess та config.sub встановлена. Виправлено помилки ------------------ Більш надійне управління дітьми (зайнятий сервер, DoS-атаки). Останні зміни в операціях склеп або strcmp мабуть викликали нескінченний цикл під час входу в певні випадки. Вхід за допомогою вкраденого зашифрованого пароля у віртуальних доменах запобігається. 07/Feb/2011 0.9.13 Джорген Томсен [email protected], http://jth.net Журнал Syslog із процедури обробки сигналу pop3_signal викликав виявлені процеси, особливо під час DoS-атак або багатьма одночасними клієнтами. Частково фіксована (може все ще траплятися при використанні цього біта (08) у налагодженій масі) Bugfix: деякі способи входу не працюють (David B. Cortarello) Глобальний дитячий лічильник child_procs змінено з int на "volatile sig_atomic_t", щоб зменшити можливість це не оновлюється належним чином. Лічильник не завжди був зменшений, тому програма використовувала лише один екземпляр, коли макс дитина процеси були неправильно досягнуті. Остання версія GNU config.guess та config.sub встановлена. Makefile.in і configure.in поліпшені та підтримуються для виявлення процесорів Atom та додаткової підтримки Сервісна установка (/etc/init) Каталог RFC видалено, оскільки RFC доступні в Інтернеті 26/Apr/2010 0.9.12 Jørgen Thomsen [email protected], http://jth.net Можливість подвійного видалення змінної назви поштової скриньки у спеціальних ситуаціях помилки, наприклад, при двох одночасних логінах до одна і та ж поштову скриньку. config.guess і config.sub відсутні в дистрибутиві Додано початкове повідомлення до системного журналу 18/Apr/2010 0.9.11 Jørgen Thomsen [email protected], http://jth.net Програма підтримується на платформі Linux Fedora без тестування на інших платформах, але з спробою уникнути особливостей Linux. Удосконалення сценарію налаштування, включаючи 64-бітну підтримку ЦП. Алгоритм Nagle (TCP No Delay) був відключений, що призвело до значного покращення швидкості. SO_REUSEADDR додано до демону socket для негайного повторного використання сокета після перезапуску. Підвищення сигналу покращилося, щоб бути більш портативним (sigaction) та небезпечними дзвінками, видаленими з обробника сигналу. Припинення після того як сигнал тепер має бути набагато краще, не залишаючи файли поштової скриньки. * bug * змінної носилки в дитині завжди була -1, а не фактична розетка (sock2), так що pop3_signal у дитини не закрив гніздо. Видалені виклики синхронізації (), наприклад, копіювання великих файлів на USB-диск, призведе до зависання, поки всі дані буде записано на диск (кілька хвилин) Умовна комбінація виправлень, вилучених як накладні витрати, настільки мала. Параметр налагодження був змінений на бітову маску з 2 шістнадцятирічними цифрами (діти, демон) та додатковою введені твердження для налагодження. MAXHOSTNAMELEN збільшено до 128 через імена доменів IDNA gnu-pop3d файл для /etc/event.d включений оновлена сторінка людини 18/липень/2007 р. 0.9.10 Jørgen Thomsen [email protected], http://jth.net Замок fcntl на поштовій скриньці змінено для запису блокування sync() завжди викликається при розблокуванні читайте дані від клієнта, коли таймаут включено (select), тепер перевіряє, чи не зламана труба теж викликає негайний вихід, якщо клієнт раптово зникне. Коли поштова скринька була скопійована до нової поштової скриньки, деякі MTA (e, g, postfix) можуть продовжувати писати стару поштову скриньку. Тепер порожня стара скринька зберігається як mailbox.old і об'єднується з новою, якщо вона не порожня в наступному пробігу. 24/Aug/2003 0.9.9-5 Jørgen Thomsen [email protected], http://jth.net Тест для заголовків не був достатньо суворим Статус: і X-Status: вважається рівним (Jem Berkes) Командні рядки не були зібрані в одну лінію, якщо вони отримані як окремі TCP-пакети (Nicolas Gregoire) 18/січня/2003 р. 0.9.9-4 Джорген Томсен [email protected], http://jth.net Підтримка лінії заголовка Postfix X-Original-To: для сповіщення про розподіл повідомлення. Обчислення UIDL більше не включатиме X-заголовки, оскільки їх можуть додавати деякі поштові редактори. '%' дозволено як розділювач замість @ у віртуальному імені користувача (електронна адреса) Невеликі внутрішні зміни. Додаткова підтримка автором virtdomain.pl (як знайти поштові скриньки) 18/Жов/2002 0.9.9-3 Jørgen Thomsen [email protected], http://jth.net/ Виправлено помилку, коли погана поштову скриньку не містила "Від" як перший рядок. 05/вересень/2002 0.9.9-2 Джорген Томсен [email protected], http://jth.net/ Виправлення для диска повністю перешкоджає створенню зміненої поштової скриньки в файл .new. Він був збережений без змін 04/вересень/2002 0.9.9-1 Джорген Томсен [email protected], http://jth.net/ Якщо поштова скринька не припиняється каналом рядка (якщо в разі аварійного завершення під час написання повідомлення в ньому) відбувається нескінченна петля. Якщо поштова скринька модифікується GNU pop3d, вона буде виправлена. Коли диск заповнився під час написання нової поштової скриньки, його не було виявлено, а нова поштова скринька була скорочена 19/серпень/2002 0.9.9 Джорген Томсен [email protected], http://jth.net/ Сумісність із файлами passwd vm-pop3d (не повністю перевірено) Додана чарівна зупинка, спіймаючи сигнали (SIGHUP і SIGTERM). Останній штрих і номер версії змінено на 0.9.9 19/жовтня 2001 р. Джорген Томсен [email protected], http://jth.net/ Додано сповіщення про відправлення повідомлення (повернення чека, RFC 2298) Додані параметри налаштування, щоб уникнути редагування config.h в більшості випадків Зміна оновлення поштової скриньки після копіювання всередині файлу до створення нового файлу (mailbox.new) якщо потрібно, і поліпшить копіювання всередині файлу. Це значно підвищує швидкість роботи веб-пошти. Введена підтримка класичного статусу: заголовок RFC 2076 (підтримується eq Null Webmail http://nullwebmail.sourceforge.net/) 17/жовтня 2001 р. Джорген Томсен [email protected], http://jth.net/ Додано старий патч для кращої обробки дитячих процесів створення та смерті. Тепер дочірні процеси створюються за потребою, і лише батьківський процес є постійним.
Інтерфейс веб-інтерфейсу GUI функціональний як для стандартних віртуальних доменів Postfix, так і для смаку: jth віртуальних доменів. Вона поставляється як одна програма Perl, яка викликається з командного рядка для створення віртуального домену, а також від веб-сервера для адміністрування. Потрібен недавній випуск Postfix VirtDomain 1.05
#!/usr/bin/perl -w #********************************************************************** # # Utility to administer virtual domains in postfix (both the standard # ones and those defined in http://jth.net/virtual.html) # # This program should reside in /var/www/cgi-bin/virtdomain.pl with global # read and execute rights (chmod o+rx /var/www/cgi-bin/virtdomain.pl). # # Remember to define $main::postfixadmin below ! # # The first argument to the program determines its function: # CREATE: call from commandline as root: create virtual domain by updating # /etc/postfix/virtual and virtual_regexp # and creating /etc/virtual/domain/passwd and /var/spool/virtual/domain # CREATE <domain name> <real user administering the domain> # <passwd> [postfix] # DELETE: call from commandline as root: delete virtual domain by updating # /etc/postfix/virtual and virtual_regexp # and deleting /etc/virtual/domain/passwd and /var/spool/virtual/domain as # well as .forward files in the administrators homedir # DELETE <domain name> <real user administering the domain> <passwd> # <blank> # MAILBOUNCE # if called from postfix as mail to user@domain the email on STDIN will be processed # according to the setup of the user in /etc/virtual/domain/passwd. # MAILBOUNCE: bounce email to unknown users otherwise store in postmaster mailbox # <blank> if called from postfix as mail to postmaster@domain or <postfixadmin+postmaster> # with the subject "*** Virtual domain update ***" and line 1 is trans=UPDATE.... # a user will be created/updated/deleted # otherwise process email normally as above # <blank>: if called from a web server displays webpages to update the user # base in a virtual domain e,g, http://jth.net/cgi-bin/virtdomain.pl # # As a basis the user postmaster must be defined for the domain. # in the /etc/virtual/domain/passwd file. The user and group ids as # well as homedir from this user is used for the virtual domain. # For each virtual user the file homedir/.forward+user--domain is created. # The web server should have read access to these files as well as # the /etc/virtual/domain/passwd file. # The GNU pop3d deamon as maintained by me is supporting this # virtual domain implementation. # # Using this program to deliver the mail for jth style domains is not suitable for # a high volume system, as loading the Perl interpreter # has a fairly high initial CPU usage compared to this program (90% of total run time). # However, using the provision for hooking in another program to deliver the mail # may be useful. An awk utility may be used instead virtual.awk # # ©2002 Jørgen Thomsen [email protected], http://jth.net/virtual.html # 1.01 2002-08-22 Official release # 1.02 2003-01-24 Support for new virtual_alias_map parameter and relay_domains behaviour # 1.03 2003-04-26 Better language support and fix webmail URL in info # 1.04 2003-05-30 Chars | and " were removed from forwards in input. Now user shall not enter |, but start commands with " # 1.05 2004-08-06 Modifications specific to jth.net: /var/www/perl, body background changed, no CGI used # #**********************************************************************
Базуючись на власних потребах, я зробив патч для версії GNU-pop3d.
0.9.8
Я також послухав деякі запити до списку розсилки GNU pop3d.
Патч може бути застосований також, якщо вам не потрібні матеріали віртуального домену.
В основному я взяв віртуальний патч Джеремі Рід , зробив його більш загальним і додав свої власні зміни в GNU pop3d:
Пошук поштової скриньки користувачів виконується як
Замість кожного, хто застосовує патчі, я зробив це.
Причиною невикористання стандартних віртуальних доменів Postfix є подвійне:
1) ця реалізація фокусується на віртуальних доменах з кожним своїм власним адміністратором
2) такі обмеження (цитата з документації Postfix (мій акцент)):
Цей агент був спочатку заснований на місцевому агенті поставки Postfix.
Зміни в основному полягали у видаленні коду, який або не був застосований, або який не був безпечним у цьому контексті: псевдоніми, ~ користувач / .forward файли, доставка до "| command" або до / file / name
Віртуальний патч передбачає наступні файлові структури:
/etc/virtual/<domain>/passwd
для визначення користувачів, паролів і каталогу поштової скриньки
У цьому прикладі створіть каталог /etc/virtual/kvt.dk
Поштовій скриньці за замовчуванням для віртуального користувача є
/var/spool/virtual/<domain>/<user>
У цьому прикладі створіть каталог /var/spool/virtual/kvt.dk
На моєму сервері поштова інформація зберігається у homeedir /home/user </ usr>/mail/mailbox користувача, що вимагає визначення MAILSPOOLHOME в config.h.
У мене також є лише одна IP-адреса, і я хочу, щоб мій головний домен "jth.net" був автоматично позбавлений від поштових запитів до GNU pop3d.
Я створив файл config.h за командою
./configure --enable-64bit --enable-maildir -enable-default-domain = jth.net --enable-language = DA
Перед складанням GNU pop3d я переконався, що в config.h встановлено наступні константи:
#define MAILSPOOLHOME "/Mail/mailbox"
#define USE_VIRTUAL 1
#define DEFAULT_DOMAIN "jth.net "
Створіть цей файл з наступним вмістом
kvt:kvtpasswd:601:100:kvtname:/home/kvt_dk/:
abc: abcpasswd: 601: 100: abcname:.:
601 є користувальницьким користувачем користувача kvt_dk.
100 - groupid (група пошти на моєму сервері).
"."
homedir для abc це просто зробити pwck щасливим.
Пошта для [email protected] доставляється до / home / kvt_dk / Пошта / поштова скринька (див. Нижче).
Пошта для [email protected] доставляється до /var/spool/virtual/kvt.dk/abc
Якщо ви довіряєте користувачеві kvt_dk, то створіть файл passwd у домашньому каталозі користувача kvt_dk.
і зв'язати його з каталогом /etc/virtual/kvt.dk
ln -s /home/kvt_dk/passwd /etc/virtual/kvt.dk/passwd
Зверніть увагу, що тут може виникнути небезпека безпеки, оскільки GNU pop3d буде виконуватись з будь-яким користувальницьким ім'ям, вказаним у файлі passwd. Незалежно від того, чи це справжня загроза, потрібно проаналізувати.
Власник і дозволи на файли та каталоги повинні бути kvt_dk.mail та 700 напр
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
Ця реалізація може бути складнішою, ніж інші, але дозволяє різним адміністраторам кожного віртуального домену зберігати все в домашньому каталозі адміністратора домену.
Відмовте будь-яке повідомлення не за адресою [email protected] або [email protected]
Надішліть всю пошту [email protected] у поштові скриньки віртуального домену, щоб змінити рядок заголовка Delivered-To: до правильного.
Доставте всю пошту [email protected] до поштової скриньки kvt_dk
Реальні користувачі: postmaster і jth повинні отримувати всі повідомлення поштовому майстру та веб-майстру віртуального домену
Цей вираз викликає постфікс для доставки будь-якої пошти з адресами [email protected] та [email protected] з реальним користувачем kvt_dk, зберігаючи оригінальний одержувач конверта як розширення для нової адреси одержувача.
Доставляйте до поштової скриньки віртуального домену, наприклад, [email protected], щоб /var/spool/virtual/kvt.dk/abc.
Заголовок Delivered-To: змінено таким чином, щоб він містив оригінальну адресу одержувача конверта (після можливих змін за псевдонімами).