 |
от Мирослав Йорданов(23-11-2003)
рейтинг (17)
[ добре ]
[ зле ]
Вариант за отпечатване
Създаване на виртуални пощенски кутии с помощта на 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/". Ето как трябва да изглеждат променените редове след редакцията (пропускам коментарите между тях):
След като редактирахме params.h, трябва да се промени и Makefile-а. В него разкоментирайте (т.е. махнете знака “#” най-отпред) реда:
Компилирайте и инсталирайте popa3d с командите 'make' и 'make install'. Създайте непривилегирован потребител popa3d и група popa3d:
|
groupadd popa3d
useradd -g popa3d -d /dev/null -s /dev/null popa3d |
Създайте празна директория /var/empty в която popa3d ще се chroot -ва:
Най-накрая остана да стартирате 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 е 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 >>
|
 |