от Мирослав Йорданов(23-11-2003)

рейтинг (18)   [ добре ]  [ зле ]

Printer Friendly Вариант за отпечатване

Създаване на виртуални пощенски кутии с помощта на popa3d и postfix

В този документ ще се опитам да ви обясня как да използвате виртуални пощенски кутии с помощта на popa3d и postfix. В допълнение ще опиша как да използвате тези пощи с openwebmail.


Инсталиране на popa3d

Последната версия на popa3d можете да изтеглите от http://www.openwall.com/popa3d/ . В момента на писането на този документ последната версия е 0.6.4, така че по натам ще използвам нея. Първо разархивирайте popa3d и влезте в новосъздадената директория:
tar xvfz popa3d-0.6.4.tar.gz
 cd popa3d-0.6.4

За да можете да компилирате popa3d с подръжка за виртуални пощенски кутии, трябва да редактирате файла params.h. В него променете POP_VIRTUAL и VIRTUAL_ONLY от 0 на 1. След това трябва да посочите пътя, където ще се намират вашите виртуални пощенски кутии. За тази цел, променете VIRTUAL_HOME_PATH. Стойността по подразбиране е “/vhome” - вие я променете според вашите изисквания. В нашия пример, ще заменя “/vhome” с "/home/virtual/popa3d/". Ето как трябва да изглеждат променените редове след редакцията (пропускам коментарите между тях):
#define POP_VIRTUAL                     1
 #define VIRTUAL_HOME_PATH               "/home/virtual/popa3d/"
 #define VIRTUAL_ONLY                    1

След като редактирахме params.h, трябва да се промени и Makefile-а. В него разкоментирайте (т.е. махнете знака “#” най-отпред) реда:
#LIBS += -lcrypt

Компилирайте и инсталирайте popa3d с командите 'make' и 'make install'. Създайте непривилегирован потребител popa3d и група popa3d:
groupadd popa3d
 useradd -g popa3d -d /dev/null -s /dev/null popa3d

Създайте празна директория /var/empty в която popa3d ще се chroot -ва:
mkdir -m 755 /var/empty

Най-накрая остана да стартирате popa3d. Ако използвате inetd можете да добавите следния ред в /etc/inetd.conf:
pop3 stream tcp nowait root /usr/sbin/tcpd /usr/local/sbin/popa3d

Ако искате да използвате pop3 с SSL (pop3s), трябва да инсталирате stunnel и да добавите следния ред в /etc/inetd.conf:
pop3s stream  tcp nowait root /usr/sbin/stunnel 
 stunnel -p /etc/webmin/miniserv.pem -l /usr/local/sbin/popa3d

В случая аз използвам сертификата генериран при инсталацията на webmin.


Добавяне на pop3-потребители

Преди това, няколко общи приказки. По-рано посочихме директорията, в която ще се съхраняват виртуалните пощенски кутии (/home/virtual/popa3d/). Popa3d очаква да намери в тази директория, която съответства на IP-то, на което “слуша”. В повечето случаи това е адресът 127.0.0.1. В тази директория popa3d очаква да намери две други директории – auth и mail. В mail-директорията са пощенските кутии – всяка пощенска кутия е с името на потребителя. В auth-директорията са файловете, съдържащи потребителско име и криптирана парола – всеки файл се казва на името на потребителя. За да стане малко по-ясно, ето какви директории трябва да създадете (в нашия пример):
/home/virtual/popa3d/127.0.0.1/
 /home/virtual/popa3d/127.0.0.1/auth/
 /home/virtual/popa3d/127.0.0.1/mail/

Самото добавяне на потребителите става с perl-скрипта add-popa3d-user, който можете да изтеглите от http://gene.science.uva.nl/~talerven/software/. Редактирайте скрипта, като зададете стойност на променливата $virtual_domain_root_directory. В нашия пример редът с тази променлива трябва да изглежда така:
my $virtual_domain_root_directory = "/home/virtual/popa3d/127.0.0.1";

Също така, трябва да посочите потребител, който да е собственик на виртуалните пощи. Нека в нашия пример да използваме потребителя vmail. Можете да го създадете с команда, подобна на тази:
adduser --system --no-create-home vmail

Сега посочете този потребител за $virtual_mail_owner:
my $virtual_mail_owner = "vmail";

Вече сте готови да добавяте потребители. Използвайте скрипта add-popa3d-user директно или посочете като аргумент името на потребителя, който искате да добавите. Ако потребителят е реален Unix-потребител на системата, неговия mailbox-файл ще бъде създаден със собственик реалния потребител и група mail. Ако няма такъв реален потребител, mailbox-файлът ще бъде създаден със собственик vmail (потребителя за виртуалната поща) и група mail.


Конфигуриране на postfix

Накрая стигнахме до най-интересната част – конфигурирането на postfix. Тук няма да описвам инсталирането на postfix. Ако искате да научите повече за postfix прочетете статията Postfix - бърз, сигурен и лесен за управление на Н. Антонов. Трябва да добавите следните редове във файла main.cf (обикновено /etc/postfix/main.cf):
virtual_transport = virtual
 virtual_mailbox_base = /home/virtual/popa3d/127.0.0.1/mail
 virtual_mailbox_maps = hash:/etc/postfix/vmailbox
 virtual_mailbox_domains = hash:/etc/postfix/vmaildomains
 virtual_minimum_uid = 100
 virtual_uid_maps = static:112
 virtual_gid_maps = static:8

virtual_mailbox_base – указва пътя до пощенските кутии
virtual_mailbox_maps – пътя до map файла с потребителите
virtual_mailbox_domains – пътя до map-файла с домейните
virtual_minimum_uid – минималното uid
virtual_uid_maps – потребителят, с чието ID ще се записват mailbox-файловете. В нашия пример това е 112, ID -то на потребителя vmail.
virtual_gid_maps – групата, с чието ID ще се записват mailbox файловете. В нашия пример това е 8 – групата mail.

Сега създайте файла /etc/postfix/vmaildomains и добавете в него домейна за виртуалните пощи по следния начин:
domain.name    required to prevent relay access denied errors

Можете да добавите повече от един домейн. След това създайте файла /etc/postfix/vmailbox и добавете в него създадените pop3-виртуални пощенски кутии. Да приемем, че сме създали поща за потребителя test със скрипт add-popa3d-user. Тогава трябва да запишем:
test@domain.name test

Както се досещате, test@domain.name е email-адресът, а test е mailbox-файлът, в който ще се запазва пощата. След създаването/променянето на map-файловете не забравяйте да изпълните командата postmap за всеки един от тях:
postmap /etc/postfix/vmailbox
 postmap /etc/postfix/vmaildomains

Проверете дали във файла /etc/postfix/master.cf е коментиран редът:
virtual   unix  -       n       n       -       -       virtual

Ако е коментиран, разкоментирайте го. Сега презаредете конфигурацията на postfix (с командата 'postfix reload') и вече можете да използвате създадените виртуални пощенски кутии.

Остава само един проблем за разрешаване. Когато popa3d е компилиран така, че да използва виртуални пощенски кутии, тогава той не може да работи с пощенските кутии на реалните потребители на системата (т.е. реалните потребители няма да могат да си изтеглят пощата чрез popa3d). Единият от начините това да стане възможно е да представите реалните потребители като виртуални. Как става това. Първо добавяте реалните потребители със скрипта add-popa3d-user. Той ще разбере, че са реални потребители и ще създаде техните mailbox-файлове с техните си права. Освен това, ще поиска да въведете друга парола за потребителя – няма да се използва реалната парола на потребителя в системата, което е плюс за сигурността на вашата система. След това трябва да редактирате main.cf файла на postfix, като махнете вашия hostname от mydestination. Например, ако вашият hostname е example.org, то в момента вашия mydestination ред изглежда по подобен начин:
mydestination = example.org, localhost, $localhost.$mydomain

След като го редактирате, трябва да изглежда по лседния начин:
mydestination = localhost, $localhost.$mydomain

После добавете вашия hostname в /etc/postfix/vmaildomains и реалните потребители в /etc/postfix/vmailbox както беше описано по горе. След редактирането на map файловете, не забравяйте да изпълните командата 'postmap името_на_map_файла' и да презаредите конфигурацията на postfix.

Забележка
Във файла vmailbox няма да можете да използвате записи от типа:
test1@domain.name	other@email.mail

Горният запис НЯМА да препрати пощата към other@email.mail (както предполагам сте свикнали със записите във файла virtual), а ще създаде виртуална пощенска кутия, която ще се казва other@email.mail . За да можете да препращате пощата към друг email адрес, запишете следното в main.cf:
virtual_alias_maps = hash:/etc/postfix/vmailalias

След това във файла /etc/postfix/vmailalias можете да добавите реда:
test1@domain.name	other@email.mail


Забележка 2
Включете потребителите popa3d и vmail в групата mail, за да могат да пишат в пощенските кутии на реалните потребители на системата без да възникнат проблеми с правата.


Конфигуриране на Openwebmail да използва виртуалните пощи

За да настроите вашия openwebmail да работи с виртуалните пощенски кутии, трябва да промените и добавите няколко реда в /etc/openwebmail/openwebmail.conf. Променете редовете с auth_module и mailspooldir по следния начин:
auth_module             auth_pop3.pl
 mailspooldir            /home/virtual/popa3d/127.0.0.1/mail

След това добавете следните редове:
use_syshomedir             no
 use_homedirspools          no
 enable_changepwd           no
 enable_autoreply           no
 enable_setforward          no
 enable_pop3             yes
 pop3_authserver         localhost
 pop3_authport           110
 getmail_from_pop3_authserver    yes

Това е!


В допълнение

Посочената информация не претендира да е пълна и абсолютно точна!
Има и други решения за виртуални пощенски кутии и postfix – например postfix + vm-pop3d. Може те да са по подходящи за вас. Като допълнителна документация може да използвате файла VIRTUAL_README от документацията на postfix, файла INSTALL пакета на popa3d и pop3-ssl-using-popa3d-HOWTO, в което се използва exim за MTA (http://gene.wins.uva.nl/~talerven/software/add-popa3d-user/pop3-ssl-using-popa3d-HOWTO).



<< Как да пуснем VPN под Linux | Чудният свят на Линукс 2.6 >>