GNU pop3d va Postfixdan foydalanilgan virtual domenlar
Asl maqola - Virtual domains using GNU pop3d and Postfix
Maqola Muallifi(lari) - Jorgen Thomsen
Manba: http://jth.net/virtual.html
GNU pop3d 0.10.3
GNU pop3d 0.10.3 tayyor. Uni bu yerdan yuklab olishingiz mumkin GNU pop3d 0.10.3
O'ZGARISHLAR / TARIX
12/May/2017 0.10.3 Jørgen Thomsen [email protected], http://jth.net/virtual.html
Yangi xususiyatlari
------------
Statusni o'chirib qo'yish: hearderni qo'llab-quvvatlash (RFC 2076)
Login user namega Parametr s- qo’shing (README faylga qarang)
22/Mar/2014 0.10.2 Jørgen Thomsen [email protected], http://jth.net/virtual.html
Yangi xususiyatlar
------------
IPv6 konfiguratsiyasini qo’llab quvvatlash --disable--ipv6 va ishlash vaqtida --ipv6
POP3Sni --enable-pop3s bilan qo'llab-quvvatlanadigan
Xinetdning ishlayotgan konfiguratsiyani ishga stunnel incl. namuna sertifikati va kalit orqali tushiriladi
Shart: xinetd va stunnel o'rnatilinishi
Virtual domenlarda (C crypt orqali) shifrlarni qo'llab-quvvatlash (bundan keyin APOP yo'q)
Daemon boshlashni qo'llab-quvvatlashni kengaytirish --enable-service=SERVICE
Endi sysvinit, init, event.d, systemd va yagona user inetd, xinetd uchun konfiguratsiyani qo'llab-quvvatlaydi
(Ehtimol, mukammal emas :) O'rnatishni tekshirib ko'ring)
O’rnatish ildizini konfiguratsiya paytida --enable-rootdir = DIR orqali ko'rsatish mumkin
va yana Root=DIR o'rnatish bilan
o'chirish xususiyati qo'shildi
pop3client.pl dasturi oddiy test uchun va stressli pop3 server testi uchun
glibc crypt () ga mos virtual domenlar uchun parollar yaratish va / yoki shifrlash uchun mkpwd.pl
kill -SIGUSR2 syslog da bir nechta vaziyat o'zgaruvchilari ko'rsatiladi
Daemon: hozirgi vaqtda sessiya sonini va faol bolalarni pidlarini ko'rsatish va hisoblash, bayroqlar qiymatining aniqlanishini bekor qilish.
Child: IP-manzildan ulangan foydalanuvchi uchun ishlatilingan kommand va vaqtlarni ko’rsatadi
O'zgarishlar
-------
extra.c/pop3_syslog endi STDERR (debug=0x1yy) ga log yozadi.
pop3_syslog da individual syslog ustuvorliklari saqlanib turadi.
pop3_syslog orqali ko'proq log yozish.
pop3_syslog da barqarorlikni yaxshilash uchun kutubxona protseduralarini barqarorlikni oshirish uchun kamaytiriladi.
Eskirgan gethostbyname va gethostbyaddr, getaddrinfo va getnameinfo ga almashtirildi
inet_ntoa o'rniga endi inet_ntop
1 soniyalik kechikish robotlar zaif parollarni tekshirishni to'xtatish bilan BAD LOGINni qaytarish uchun.
Help matnlari tozalandi va takomillashdi.
O'rnatilgan skriptni yaxshilash
- qo'shimcha daemon ishga tushirishni boshlash tizimlari bilan ishlash
- stunnel + xinetd yordamida pop3s konfiguratsiyasi
- O'rnatish ildiz katalogining spetsifikatsiyasi
- IPv6 yordami
- firewalld xavfsizlik devori qo'llab-quvvatlanadi
- xususiyatlarni o’chirish
Iltimos, Linux Fedora 12, 15, 18, 20 da o'rnatishni sinashni amalga oshirilganini kuzating, shuning uchun u hamma hollarda mukammal bo'lmasligi mumkin.
GNU-pop3d kerakli konfiguratsion fayllarsiz yagona dastur bo'lib, uni qo'lda /usr/local/sbin/gnu-pop3d ga joylashtirish mumkin
va tizim xizmatlarining boshlang'ich skriptiga kirdi
MD5 kodi yangilangan (Gray Watson) katta/kichik endianni qo'llab-quvvatlaydi
Eng so'nggi GNU config.guessni va config.subni o'rnatadi.
Xatolar aniqlandi
----------
Bundan ham mustahkam child management (band server, DoS hujumlar).
crypt yoki strcmp funktsiyalaridagi so'nggi o'zgarishlar kirish paytida cheksiz loopga sabab bo’ldi.
Virtual domenlarda o'g'irlangan shifrlangan parol yordamida kirishni taqiqlash.
07/Fev/2011 0.9.13 Jørgen Thomsen [email protected], http://jth.net
Pop3_signal signalni ishlovchi protsedurasidan syslog ro'yxatidan o'tish, ayniqsa, DoS hujumlar paytida osilgan jarayonlarga sabab bo'ldi yoki
bir vaqtning o'zida ko'pchilik mijozlar tomonidan. Qisman to’g’irlandi (qachon debug maskdagi bu bitni (08) orqali ishlatganda paydo bo'lishi mumkin)
Xatolik: ba'zi kirish usullari ishlamadi (Devid B. Cortarello)
Globalniy child hisoblagich bo’lmish child_procs intdan ‘volatile sig_atomic_t’ ga o'zgarib imkoniyatni kamaytiradi
u to'g'ri yangilanmagan.
Hisoblagich har doim ham qisqartirilmagan, shuning uchun dastur maksimal child bo'lganda, faqat bitta holatni qo'lladi
jarayonlarga noto'g'ri erishildi.
Eng so'nggi GNU config.guess va config.sub o'rnatilindi.
Makefile.in va configure.in ishlab chiqilgan va Atom protsessorlarini aniqlash uchun qo'llab-quvvatlandi va qo'shimcha yordam berish uchun
xizmatni o'rnatish (/etc/init)
RFClar katalogi o'chirildi, chunki RFClar Internetda osonlikcha mavjud
26/Apr/2010 0.9.12 Jørgen Thomsen [email protected], http://jth.net
Maxsus xato vaziyatlarda pochta qutisi nomini ikki martalab bo’shating, masalan ikki bir xil loginlar
bir xil pochta qutisi.
config.guess va config.sub taqsimotdan mahrum
Syslog ga dastlabki xabar qo'shildi
18/Apr/2010 0.9.11 Jørgen Thomsen [email protected], http://jth.net
Dastur boshqa platformalar bo'yicha sinovdan o'tmagan Linux Fedora platformasida saqlanadi, lekin
Linuxning o'ziga xos xususiyatlaridan qochishga uringan.
Konfiguratsiya skriptini takomillashtirish, jumladan 64 bit CPUni qo'llab quvvatlash.
Nagle (TCP No Delay) algoritimi tezlikda katta takomillashtirish sabab o'chirib qo'yildi.
SO_REUSEADDR daemon socketga restartdan keyin o’rtancha soketni qayta ishlatish uchun qo’shildi.
Signallarni qayta ishlash yanada qulay (sigaction) bo'lishi uchun ishlab chiqilgan va xavfli bo'lmagan chaqiruvlar uzatish ishlovchilaridan olib tashlandi. Bekor qilish
bir signal so'ng, mailbox.lock fayllarini atrofda qoldirmaslik ancha yaxshi bo'lishi kerak.
* Bug * sock o'zgaruvchisi har doim childda -1 edi va haqiqiy socket (sock2) emas, shuning uchun childagi pop3_signal soketni yopmadi.
sync() chaqiriqlar olib tashlangan, masalan katta hajmdagi fayllarni USB diskiga nusxalash osilib qoladi hamma data yozilmagunicha (bir necha daqiqalar)
Yukni olib tashlash kabi o'chirib tashlangan hisobotlarni shartli tuzish juda kichik.
Xatolarni tuzatish parametrlari 2 ta olti raqamli bit maskasi (bolalar, xizmatchi) o'zgartirildi va qo'shimcha ravishda
Debugging bayonnomalar qo'shilgan.
MAXHOSTNAMELEN 128 ga oshdi, IDNA domen nomlari tufayli
gnu-pop3d fayli /etc/event.d included uchun
man sahifasi yangilandi
18/Iyul/2007 0.9.10 Jørgen Thomsen [email protected], http://jth.net
Pochta qutisidagi fcntl lock lock yozish uchun o'zgartirildi
sync() har doim qulfdan chaqiriladi
timeout yoqilganda datani o’qish bilan (tanlash) mijozdan ma'lumotni o'qidi, endi bo’lingan pipeni tekshiradi,
agar mijoz kutilmaganda yo'qolsa.
Pochta qutisi yangi pochta qutisiga ko'chirilganda, ba'zi MTA'lar (masalan, postfix) eski pochta qutisiga yozishni davom ettirishi mumkin.
Endi bo'sh eski pochta qutisi mailbox.old sifatida saqlanadi va keyingi safarda bo'sh bo'lmasa, yangi bilan birlashtiriladi.
24/Avg/2003 0.9.9-5 Jørgen Thomsen [email protected], http://jth.net
Sarlavha satrlari uchun sinovlar yetarli darajada emas: va X-Status: teng hisoblanadi (Jem Berkes)
Ayrim TCP-paketlar (Nikolas Gregoire) sifatida qabul qilingan bo'lsa, buyruq qatorlari bir qatorga o'rnatilmagan.
18/Yan/2003 0.9.9-4 Jørgen Thomsen [email protected], http://jth.net
Postfix X-Original-To ni qo’llab quvvatlash: sarlavha satr uchun Message Disposition Notification.
UIDL hisob-kitoblari endi X-headerlinesni o'z ichiga olmaydi, chunki ular ba'zi pochta o'qiydiganlar tomonidan qo'shilishi mumkin.
"%" '%' chegarachisi sifatida ruxsat etiladi @ virtual foydalanuvchi nomi o'rniga
Kichik ichki o'zgarishlar.
Muallif tomonidan virtdomain.pl uchun qo'shimcha yordam (pochta qutisini qanday topish mumkin)
18/Okt/2002 0.9.9-3 Jørgen Thomsen [email protected], http://jth.net/
Birinchi qatorda “From” bo’lmagan noto'g'ri pochta qutisidagi xato tuzatildi.
05/Sen/2002 0.9.9-2 Jørgen Thomsen [email protected], http://jth.net/
To'liq disk uchun o'zgartirilgan pochta qutisining .new faylga yozilishiga yo'l qo'yilmasdi. O'zgarishsiz qoldi
04/Sen/2002 0.9.9-1 Jørgen Thomsen [email protected], http://jth.net/
Agar pochta qutisi liniya orqali yozilmasa (agar unga xat yozishda nosozlik bo'lsa)
cheksiz aylanma (loop) paydo bo'ldi. Pochta qutisi GNU pop3d tomonidan o'zgartirilgan bo'lsa, u to’g’irlandi.
Yangi pochta qutisini yozishda disk to'la bo'lganda yangi pochta qutisi yozilmasdi
19/Avg/2002 0.9.9 Jørgen Thomsen [email protected], http://jth.net/
vm-pop3d passwd fayllari bilan moslik taqdim etildi (to'liq sinovdan o'tkazilmagan)
Signallar (SIGHUP va SIGTERM) yordamida to'xtash qo’shildi.
Oxirgi teginish va versiya raqami 0.9.9 ga o'zgartirildi
19/Oct/2001 Jørgen Thomsen [email protected], http://jth.net/
Message Disposition Notification qo’shildi (qaytarib olish, RFC 2298)
Ko'p hollarda config.h ni tahrirlashni oldini olish uchun konfiguratsiya parametrlari qo'shilgan
Yangi fayl yaratish uchun pochta qutisidagi yangilash (mailbox.new)
agar kerak bo'lsa, faylning nusxasini yaxshilash. Bu, ayniqsa, veb-pochta dasturlari uchun tezlikni oshiradi.
Klassik Statusni qo'llab-quvvatladi: RFC 2076 bosh satri (masalan, Null Webmail tomonidan qo'llab-quvvatlandi
http://nullwebmail.sourceforge.net/)
17/Okt/2001 Jørgen Thomsen [email protected], http://jth.net/
Children protseslarini yaratish va o'limni yaxshiroq boshqarish uchun eski tuzatkich qo'shildi.
Endi child protseslari zarurat tug'ilganda yaratiladi va parent protsesni doimiy qiladi.
VirtDomain 1.05
Veb GUI interfeysi, har ikkala standart Postfix virtual domenlari va mening lazzat uchun ishlab chiqilgan: jth virtual domenlari. Virtual domen yaratish uchun virtual buyruq satridan va veb-serverdan uni boshqarish uchun chaqirganlardan bir Perl dasturi bo'lib keladi. Postfix VirtDomain 1.05 ning so'nggi versiyasini talab qiladi
#!/usr/bin/perl –w
# ************************************************* *********************
#
# Postfiksdagi virtual domenlarni boshqarish uchun dastur (standartlar ham
# va http://jth.net/virtual.html da tavsiflanganlar ham)
#
# Ushbu dastur global ravishda /var/www/cgi-bin/virtdomain.pl da joylashgan bo'lishi kerak
# huquqlarni o'qib chiqing va ijro eting (chmod o+rx /var/www/cgi-bin/virtdomain.pl).
#
# $main::postfixadmin ni aniqlashni unutmang!
#
# Dasturga birinchi dalil uning funktsiyasini belgilaydi:
# CREATE: root bo’lib commandlinedan chaqirish: yangilash orqali virtual domen yaratish
# /etc/postfix/virtual and virtual_regexp
# va /etc/virtual/domain/passwd va /var/spool/virtual/domain yaratish
# CREATE
# [postfix]
# DELETE: root bo’lib commandlinedan chaqirish: virtual domenni yangilash orqali o'chirib tashlash
# /etc/postfix/virtual and virtual_regexp
# va /etc/virtual/domain/passwd va /var/spool/virtual/domain kabi o'chiriladi
# shuningdek Administrator homedirda .forward fayli
# DELETE
#
# MAILBOUNCE
# mail dan user@domain ga postfix dan chaqirilsa, STDIN dagi email ishlaydi.
# /etc/virtual/domain/passwd da foydalanuvchining sozlashiga asosan.
# MAILBOUNCE: noma'lum foydalanuvchilarga elektron pochtani yuborish, aks holda postmaster pochta qutisida saqlanadi
# Agar postfiksdan mailga postmaster@domain yoki chaqirilsa
# "*** Virtual domain update ***" mavzu va 1-liniyada 1 trans=UPDATE…. bilan
# foydalanuvchi yaratilinadi/yangilanadi/o'chiriladi
# Aksincha yuqorida ko'rsatilgan tartibda elektron pochtani yuboring
# : agar veb-serverdan chaqirsangiz, foydalanuvchini yangilash uchun veb-sahifalarni ko'rsatadi
# virtual domendagi baza, masalan, http://jth.net/cgi-bin/virtdomain.pl
#
# Asos sifatida postmaster foydalanuvchisi domen uchun belgilanishi kerak.
# /etc/virtual/domain/passwd faylida. Foydalanuvchi va guruh identifikatorlari
# hamda shu foydalanuvchidan homedir virtual domen uchun ham ishlatilinadi.
# Har bir virtual foydalanuvchi uchun homedir/.forward+user--domain yaratilinadi.
# Veb-server ushbu fayllarni o'qishga kirish huquqiga ega bo'lishi kerak, shuningdek
# /etc/virtual/domain/passwd faylini ham.
# GNU pop3d deamon men tomonidan qo'llab-quvvatlanadigan ushbu
# virtual domenni qo'llashni qo'llab-quvvatlashdir.
#
# Jth tarzi domenlari uchun pochta xabarlarini etkazish uchun ushbu dasturni ishlatish mos emas
# Perl tarjimonni yuklanishidek yuqori hajmli tizim
# Bu dasturga nisbatan juda katta boshlang'ich CPU foydalanishga ega (jami ish vaqti 90%).
# Biroq, xabarni yetkazib berish uchun boshqa dasturga ulanish uchun qoidadan foydalaning
# foydali bo'lishi mumkin. virtual.awk o'rniga awk yordam dasturidan foydalanish mumkin
#
# ©2002 Jørgen Thomsen [email protected], http://jth.net/virtual.html
# 1.01 2002-08-22 Rasmiy versiya
# 1.02 2003-01-24 Yangi virtual_alias_map parametrini va relay_domains xatti-harakatlarini qo'llab-quvvatlash
# 1.03 2003-04-26 info-da yaxshiroq til yordami va webmail URL-manzilini tuzatish
# 1.04 2003-05-30 Chars | va " kirishdan oldinga olib tashlandi. Endi foydalanuvchi kirita olmaydi, lekin komand yoza oladi"
# 1.05 2004-08-06 O'ziga xos jth.net uchun o'zgarish: /var/www/perl, tananing foni o'zgarib, CGI ishlatilmadi
#
# ************************************************* *********************
Qadimgi, lekin asosan hali ham amal qiladi
GNU pop3d 0.9.8 ga o'zgartishlar
(ba'zi o'zgarishlar virtual domenlar bilan bog'liq emas, shu jumladan, POP-before-SMTP)
Men o'z ehtiyojlarimga asoslanib, GNU-pop3d vers. 0.9.8ni tuzatdim.
Men GNU pop3d pochta ro'yxatidagi ba'zi so'rovlarni tingladim.
Agar sizga virtual domen narsalari kerak bo'lmasa, tuzatish ilovasi ham qo'llanilishi mumkin.
Asosan Jeremy Reedning virtual-patchini oldim, umumiyroq qilib va men o’zimning GNU pop3d o’zgartirishlarimni kiritdim:
- virtual domen foydalanuvchilari, shuningdek, boshqa joylarda pochta qutilarida haqiqiy foydalanuvchilar bo'lishiga imkon beradi
- virtual domen foydalanuvchilari uchun APOP qo'llab-quvvatlashini qo'shish
- haqiqiy domen uchun ishlatilsa, uni o'chirish uchun standart domen qo'shiladi, masalan "[email protected]" -> "userid"
- nolga teng bo'lmagan xato kodlari ro'yxatini qo'shib qo'ydi
- UIDL buyrug'i har bir xabar uchun noyob identifikatorlarni taqdim etdi
- xabar hajmining hisobini tuzatdi
- kodni biroz tozalandi, ayniqsa bemalol ajratilgan xotirani
- j6: “” dan logmessage-ga "Incoming connection opened"
- j7: POP-before-SMTP quvvatlash uchun maillogga "Authenticated IP " yangi msg qo'shildi
- j8: o'chirildi (izohlandi) "Authenticated IP " maillog msg
- Bennett Todd tomonidan POP-before-SMTP xizmatidan modifikatsiya qilinmasdan foydalanish uchun logmessage "User %s logged in with mailbox %s"ga " from "> qo’shildi.
Foydalanuvchilarning pochta qutisini izlash jarayoni quyidagi kabi amalga oshiriladi
- qidirish MAILSPOOLHOME (masalan /home/user/Mail/mailbox)
- qidirish _MAILDIR (masalan /var/mail/user)
- qidirish VIRTUAL_MAILDIR (masalan /var/spool/virtual/domain/user)
- tashash and ishlatish /dev/null
Patching GNU pop3d
Har bir odamni tuzatib olish o'rniga men buni qildim.
- Patch qilingan manbani gnu-pop3d-0.9.11.tar.gzdan yuklab oling
- config.h faylini yarating (./configure yoki ./configure --enable-ip-based-virtual (quyidagi boshqa qo'ng'iroqni ko'ring) )
- Agar MAILSPOOLHOME ni belgilashni kerak bo'lsa/xohlasangiz, (masalan, "/Mail/mailbox ") va/yoki config.h da konfiguratsiya da DEFAULT_DOMAIN.
- Make ni kompilyatsiya qilish
Texnik o'zgarishlar
- virtual domen dagi parol fayli formati standart /etc/passwd fayl formatiga tenglashtirildi username:password:user id:(group id):(user name):mailbox directory:(shell) masalan, pwck command orqali tekshirishga imkon beradi. pwck -r /etc/virtual/domain.com/passwd Qavslar ichiga olingan joylar ishlatilinmaydi. Pochta qutisi katalogi '.' bo’lishi kerak agar ishlatilinmasa
- APOS qo'llab-quvvatlashi 0.9.8 distributsiyasini o'chirib qo'yadi. Yoqilgan testdan tashqari, APOP foydalanuvchisiga USER buyrug'idan foydalanishga ruxsat berilmasligi kerak. Bu mantiqqa to'g'ri kelmaydi, chunki foydalanuvchilar pochta xabarlarini tekshirish uchun turli xil pochta dasturlarini ishlatishlari mumkin. Ulardan ba'zilari APOPni qo'llab-quvvatlamasligi mumkin.
- Original virtual papkasi passwd faylida shifrlangan parollardan foydalanadi. Ushbu fayldan APOPni qo'llab-quvvatlash uchun parollar endi shifrlanmagan
- Xabarning identifikatori birinchi "From" –chizig’idan MD5-digesti va ixtiyoriy Message-ID:-field dan tashqari hamma sarlavha satrlari sifatida hisoblanadi
- Ko'p holatlarda 2 ta fgets chaqiriqlar bilan chiziqni o'qishdan saqlanish uchun bufer uzunligi 80 dan 160 gacha oshirildi. Mos keladigan shriftlardan foydalanadigan odamlar belgilari soni 80 oshib ketishi mumkin
- CAPA komandi ko'rsatgan qobiliyatlarga "UIDL" ni qo'shdi
- POP-before-SMTP qo’llab quvvatlash uchun "Incoming connection opened" ga IP-manzil bilan bir qatorda "Authenticated IP a.b.c.d" xabari maillogga qo’shildi.
Postfix va GNU pop3d da virtual domenlarni qo'llash
Postfixning standart virtual domenlarini ishlatmaslik sababi ikkita:
1) ushbu dastur virtual administratorlar bilan virtual domenlarga qaratilgan
2) quyidagi cheklashlar (Postfix hujjatidan iqtibos (mening diqqatim)):
Ushbu agent dastlab Postfix mahalliy etkazib berish agentiga asoslandi. O'zgarishlar, asosan, qo'llanilmagan yoki bu erda xavfsiz bo'lmagan kodni olib tashlashdan iborat bo’lgan: taxalluslar, ~user/.forward fayllari, "|command"ga yoki /file/name ga yetkazib beradi
Quyida, Postfix va GNU pop3d da kvt.dk virtual domenini qo'llashning bir usuli ko'rsatilgan.
Tizimda real foydalanuvchi kvt_dk belgilandi. Ushbu foydalanuvchi bosh sahifa kvt.dk virtual domenida ba'zi ma'lumotlar mavjud.
Ikki foydalanuvchi kvt.dk: [email protected] (faqat virtual foydalanuvchi) va [email protected] (pochta serverida haqiqiy kvt_dk foydalanuvchi) da belgilangan
Ushbu dastur Redhat Linux 7.0 ga asoslangan
GNU pop3d
Jeremy Reeds virtual patchning original tavsifini
virtual patch quyidagi fayl tuzilmalarni tasavvur qiladi:
/etc/virtual//passwd
foydalanuvchilar, parollar va pochta qutisini aniqlash uchun
Ushbu misolda /etc/virtual/kvt.dk katalogini yarating
Virtual foydalanuvchilar uchun standart pochta qutisi
/var/spool/virtual//
Ushbu misolda /var/spool/virtual/kvt.dk katalogini yarating
Mening serverimda pochtalar pochta foydalanuvchining bosh sahifasida/home//Mail/mailbox saqlanadi, config.h da MAILSPOOLHOME yozilgan bo’lsa.
Menda faqat bitta IP-manzil mavjud va mening asosiy domenim "jth.net" pochta so'rovlaridan GNU pop3d-ga avtomatik tarzda olib qo'yilishini istayman.
Komand orqali config.h faylini yaratdim
./configure --enable-64bit --enable-maildir -enable-default-domain=jth.net --enable-language=DA
GNU pop3dning kompilatsiyasidan oldin, config.h da quyidagilar belgilab qo'yilganligiga ishonch hosil qildim:
#define MAILSPOOLHOME "/Mail/mailbox"
#define USE_VIRTUAL 1
#define DEFAULT_DOMAIN "jth.net"
/etc/virtual/kvt.dk/passwd
Quyidagi tarkib bilan ushbu faylni yarating
kvt:kvtpasswd:601:100:kvtname:/home/kvt_dk/:
abc:abcpasswd:601:100:abcname:.:
601 kvt_dk foydalanuvchisining userid si. 100 groupid (mening serverimdagi guruh pochtasi). '.' homedir abc uchun faqat pwck ni xursand qilish uchun.
[email protected] maili /home/kvt_dk/Mail/mailbox ga yetkaziladi (pastga qarang).
[email protected] maili / var/spool/virtual/kvt.dk/abc ga yetkaziladi.
Agar kvt_dk foydalanuvchisiga ishonsangiz, kvt_dk. foydalanuvchisining bosh sahifasida passwd faylini yarating va /etc/virtual/kvt.dk katalogiga bog'lang
ln -s / home / kvt_dk / passwd /etc/virtual/kvt.dk/passwd
GNU pop3d passwd faylida ko'rsatilgan har qanday foydalanuvchi identifikatori bilan ishlashi sababli bu erda xavfsizlik xatarlari bo'lishi mumkin. Bu haqiqiy tahdidmi, yo’qmi tahlil qilish kerak.
Fayl va katalogdagi egasi va ruxsatnomalar kvt_dk.mail va 700 bo'lishi kerak, masalan
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
Postfiks
Ushbu dastur boshqalardan ko'ra murakkab bo'lishi mumkin, lekin har bir virtual domenning turli administratorlariga domen administratorining bosh sahifasida hamma narsani saqlab qolishga imkon beradi.
/etc/postfix/main.cf
recipient_delimiter = +
home_mailbox = Mail/mailbox
allow_mail_to_commands = forward
allow_mail_to_files = forward
/home/kvt_dk
-rw-r--r-- 1 kvt_dk mail 12 Dec 10 02:52 .forward
-rw-r--r-- 1 kvt_dk mail 25 Dec 10 01:55 .forward+abc--kvt.dk
-rw-r--r-- 1 kvt_dk mail 20 Dec 10 02:53 .forward+kvt--kvt.dk
/home/kvt_dk/.forward
|"exit 67"
[email protected] yoki [email protected] uchun hech qanday xabarni o'chirmang
/home/kvt_dk/.forward+abc--kvt.dk
|/usr/local/bin/virtual
[email protected] elektron pochtasiga kelgan barcha xatlarni abc virtual domenga etkazib berish uchun Delivered-To: sarlavha satrini to'g'risiga o'zgartiring.
/home/kvt_dk/.forward+kvt--kvt.dk
/home/kvt_dk/Mail/mailbox
[email protected] manzilidagi barcha xabarlarni kvt_dk pochta qutisiga yuboring
/etc/postfix/virtual
kvt.dk hamma narsa
[email protected] postmaster
Haqiqiy foydalanuvchilar: postmaster va jth post administratori va virtual domen vebmasteri uchun barcha xatlarni qabul qilishlari kerak
/etc/postfix/virtual_regexp
/^(.+)@(.+\.)?(kvt\.dk)$/ kvt_dk+$1--$2$3
Bu ifoda, postfixga [email protected] va [email protected] manzillarini o'z ichiga olgan har qanday elektron pochta manzilini xujjatning haqiqiy kvt_dk manziliga etkazib beradi va asl konvertni qabul qiluvchini yangi qabul qiluvchi manzili uchun kengaytma sifatida saqlaydi.
/usr/local/bin/virtual
awk -F: -f /usr/local/bin/virtual.awk
/usr/local/bin/virtual.awk
# J. Thomsen 2002-04-11 Postfix dasturi
# /usr/local/bin/virtual.awk
#
# Postfix orqali GNU-pop3d virtual domeniga pochta orqali xabar yuborish # uchun ishlatiladi.
#
# Postfix bu yordamchi dasturni mahalliy pochta qutisiga
#Delivered-To sarlavhasini original qabul qiluvchiga
#almashtirib, etkazib berish uchun ishlatiladi
# 2002-04-11 Xabarlarni ajratib olishni ta'minlash uchun msg texti ichidagi 'From ' qatorlarini to'g'rilab, msgsga bo'sh satr qo'sh
#
Virtual domen pochta qutisiga yetkaz, masalan: [email protected] /var/spool/virtual/kvt.dk/abc ga.
Delivered-To: sarlavhasi asl konvert qabul qiluvchi manzilini o'z ichiga olishi uchun o'zgartirildi (taxalluslar bilan mumkin bo'lgan modifikatsiyadan keyin).