LINUX-BG   Адрес : http://www.linux-bg.org
Създаване на виртуални пощенски кутии с popa3d и postfix
От: Мирослав Йорданов
Публикувана на: 23-11-2003
Адрес на статията: http://www.linux-bg.org/cgi-bin/y/index.pl?page=article&id=programs&key=356532488
Създаване на виртуални пощенски кутии с помощта на 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 >>

Авторите на сайта, както и техните сътрудници запазват авторските права върху собствените си материали публикувани тук, но те са copyleft т.е. могат свободно да бъдат копирани и разпространявани с изискването изрично да се упоменава името на автора, както и да се публикува на видно място, че те са взети от оригиналния им URL-адрес на този сървър (http://www.linux-bg.org). Авторските права на преводните материали принадлежат на техните автори. Ако с публикуването тук на някакъв материал неволно са нарушени нечии права - след констатирането на този факт материалът ще бъде свален.

All trademarks, logos and copyrights mentioned on this site are the property of their respective owners.
Linux is copyright by Linus Torvalds.
© Линукс за българи ЕООД 2007
© Slavei Karadjov 1999 - 2006

All rights reserved.

Изпълнението отне: 1 wallclock secs ( 0.17 usr + 0.01 sys = 0.18 CPU)