ПредишенСледващото

Създаване на сървър за електронна поща базиран на MTA Exim (ИВ поща МТА виртуална спам вирус ClamAV FreeBSD IMAP PostgreSQL)

В тази статия ще говорим за създаване на ефективна сървър за електронна поща базиран на ИВ MTA. Първият въпрос, който е, разбира се, идва на ум - "? И защо ИВ". Отговор на този въпрос по различни начини, така че аз ще кажа, че бях толкова привлечени от ИВ-е:
- логическа схема на обработка на пощата;
- Висока скорост;
- конфигурационен файл удобен формат;
- чудесен начин да намерите всички ценности, файлове с бази данни, LDAP
- вградената поддръжка на SMTP удостоверяване
- малък брой уязвимости намерени (в действителност, аз знам само едно, че е намерено наскоро, тя докосна версии ИВ-а до 4.20 включително)
- много голям брой от възможности, както и изключителна гъвкавост
- възможност за пълна подмяна на Sendmail (т.е.. можете да направите LN -sf / ЮЕсАр / местни / sbin / Exim / ЮЕсАр / libexec / Sendmail :-))

По мое мнение, ИВ е много, много успешен продукт, не е чудно, че се използва по подразбиране в операционната система Debian GNU Linux. Две голям минус ИВ лъжа във факта, че липсата на качество документация в руските промени Makefile трябва да включите тези или други ИВ и възможности.

Така че, първо мисля, че трябва да съдържа "идеал" от гледна точка на по-лесно прилагане и използване на пощенската система. Формулиране на серия от изисквания за системата за електронна поща:

1) по-лесно управление на потребителите
2) възможността за предоставяне на достъп за изпращане на поща на потребителите на мрежата и мобилните потребители (чрез SMTP Authentication)
3) максимална защита срещу хакери, вируси и спам
Референтната система за монтаж на МТА е FreeBSD 5.2.1, което доведе до някои функции на инсталацията.

Изброяват целия набор от софтуер за пощенски сървър на вашата организация:
- ИВ 4.34 - MTA (Mail Transfer агент - Mail Transfer Agent)
- куриер-3.0.4 - IMAP сървър за достъп до пощата на потребителя, не разполагат с локални потребителски акаунти (виртуални потребители)
- ClamAV - за да сканирате за вируси
- spamassasin - за търсене на спам имейли
- PostgreSQL-7.4.2 - за съхранение на всички потребителски данни за електронна поща система
- SquirrelMail - просто хубава уеб интерфейс за електронна поща (изисква уеб сървър и PHP)

Разбира се, можете да събирате всички тези компоненти, ръчно, но аз не съм фен на този подход. На първо място е необходимо да бъде много ясно ред на монтаж на различните компоненти. На второ място, е необходимо да се разбере един куп опции за куп различни библиотеки. На трето място, трябва да сме наясно по целия път и знам какво е необходимо потребителите да добавите. Е, и четвърто, че е много трудно да се актуализира. Защото ние използваме услугите на системата за портове (ако имате, например, Debian GNU Linux, тогава ще трябва да се опаковат се нарича exim4-демон-тежка). За да направите това, задайте следните портове:

- бази данни / pogstgresql7
- пощата / ИВ (при съставянето трябва да посочите следните опции: направи WITH_PGSQL = йо
- пощата / p5-Mail-SpamAssassin
- сигурност / ClamAV
- пощата / куриер-IMAP (компилирате отново посочим: направи WITH_CRAM = йо йо WITH_POSTGRESQL =
- пощата / SquirrelMail

След сглобяване на цялата необходима началото до етапа на настройка. Там ще трябва да прекарват част от времето си, за да регулирате всички компоненти на пощенската система, както и целта на тази статия е да се намали това време :) Нека започнем с настройките на PostgreSQL база данни, като основа за изграждането на пощенската система.

На първо място pgsql PostgreSQL потребител на операционната система на човека (забележка, че този потребител има реална черупка и домашна директория - / ЮЕсАр / местни / pgsql /). Така че първо ние зададете парола за потребителя:

На следващо място, ние правим су pgsql и да започне да се създаде база данни:

Ние въведете потребителско pgsql паролата и да получите в заявки SQL командния ред. За подробности относно възможностите на базата данни, аз ви съветвам да се консултира с ръководството, или една от книгите.

Създаване на потребители на база данни;

Ние се абонирате за тази база данни:

Създаване на таблица сметки (
UID сериен NOT NULL,
вход характер различна (128)
"Password" характер на променливи (128)
Maildir характер Различно (255)
GECOS характер различна (255)
GID число DEFAULT 150
начало характер на променливи (255)
mailquota число DEFAULT 20
);
Промяна на таблица само за профили
ДОБАВИ ОГРАНИЧЕНИЯ uid_k основен ключ (UID);
Промяна на таблица само за профили
ADD ОГРАНИЧЕНИЯ login_k уникален (вход);


Създаване на маса псевдоними:

Създаване на таблица псевдоними (
мейл характер на променливи (128) NOT NULL,
псевдоним характер на променливи (128)
);
Промяна на таблица САМО псевдоними
ДОБАВИ ОГРАНИЧЕНИЯ mail_k основен ключ (поща);


Нека обясня целите на таблиците и полетата:

След това, ние ще приемем, че ние работим PostgreSQL. Въпреки това, за да се възползват напълно от тази база данни е по-добре да прочетете документацията.

На следващо място, преминете към създаване на действителната MTA EXIM. В този конфигурационен файл за версията на "пристанище" се съхранява в / ЮЕсАр / местни / и т.н. / Exim / конфигурирате. За да започнете, аз бих искал да се изясни значението на някои термини и описват основните принципи на работа на Exim.

Представете си пътя на всяко имейл съобщение. Всяко писмо се състои от така наречения "пакет" и действителните данни. Нещо, с което сме свикнали да работят в имейл клиенти, а не просто "данни" и не разполага с плика по никакъв начин. Пликът описва 2 параметри: поща от: и RCPT да. които показват на подателя и получателя, съответно.

Сесия с МТА може да се предшества от "гостоприемна" - стандарт (HELO) и напреднали (EHLO). Посланието трябва да посочат FQDN на клиента, все пак, по няколко причини, не е твърде бдителни в него
FQDN, защото Много машини могат да бъдат зад NAT. MTA в отговор Хело или EHLO обявим техните възможности, като по този начин се гарантира, сървърът на клиент и синхронизация.

Освен това, в писмото отива към веригата на така наречените "рутери", които определят как да доставят писмото. Сред черта рутери dnslookup, предоставяйки писма на базата на тези записи в DNS, файлови проверка псевдоними и .forward файлове добре и местна доставка. Всеки рутер има определено състояние и експлоатацията на съответния превоз. При условие, Exim избира каза транспорт за доставяне на писмото, в противен случай съобщението преминава към следващата рутера (толкова важна цел на описанието на рутери в конфигурационния файл).

Транспортира и определя реда за предоставяне на писмо. По този начин, Exim настройка се състои от няколко части:

-Конфигуриране Глобални настройки
-настройка на ACL
-рутер конфигурация
-конфигурация транспорт
-настройка authenticators
-конфигурация опашка
-конфигуриране на правила за пренаписване

В създаването на Exim широко използвани различни списъци (hostlist, domainlist и dnslist) и т.нар lookup'y чрез които ИВ извлича данни от външни източници.

Много от приятелите ми, опитвайки се да овладеят по износа и вноса, смята, lookup'y най-сложната тема, така че аз ще се фокусира върху този въпрос по-подробно.
Има два вида търсене: Търсене на един ключ (с един ключ) и търсят (заявка). Първият се използва за търсене на локални файлове, а вторият - в различни видове бази данни (SQL, LDAP, и т.н.). Всеки lookup'y могат да бъдат вложени, тоест, в едно търсене с помощта на резултатите от друг.

Търсене на базата на един ключ е конструиран така:


от особено значение са раздяла скоби. Ако сте запознати с функционални езици като Lisp, следния синтаксис ще бъде запознат с теб, или просто трябва да брои всеки списък структура, която се занимава ИВ. Тогава всички струни и други константи също поставени в скоби.
Това означава, че горния пример може да се разглежда като
$ Списък -> $ -> $ шофьор>.

В този случай, на самия файл, в който търсенето трябва да изглежда така:

докато самата преписка трябва да бъде, както следва:

192.168.3.4: домейн1. домейн2.
192.168.1.9: домейн3. domain4.

Търсенето се извършва в първото поле.

разлика в заявката за търсене стил е, че ние не се предвижда изрично какво да търсите, като посочи, вместо на искане. Така, например, тя изглежда като типичен заявка за SQL база:

При успех, искането се връща от базата данни, или извършване на специални действия за провали, което означава лош избор.
Няколко страшно са искания до LDAP. Ние ще ги разберем по-подробно.
uazanie сървър и LDAP порт е, както следва:

Запитвания до директорията, са както следва:

форми Заявка са описани в стандарта, но мисля, че си струва допълнително обяснение.

Когато се изисква удостоверяване на сървъра, просто използвайте нещо подобно

Обърнете внимание на необходимостта от замяна на пропуските 20 в%, както се изисква от стандарта.

Мисля, че за по-нататъшно разбиране на статията, че е достатъчно.

# OpenSSL genrsa напускане mailed.key 2048
# OpenSSL REQ -Нови -x509 -бутона mailed.key -days 365 напускане mailed.crt

В този случай, всички области на сертификата ще бъдат поискани. Имайте предвид, че файла с частния ключ не трябва да бъдат криптирани, или ИВ няма да могат да го прочетат, точно определен собственик на корена на файла: колело, и инсталиране на закона 0600.

След това можете да се опитате да стартирате ИВ в режим на отстраняване на грешки:

и да гледате на изходните съобщения. За да се даде възможност на ИВ вместо Sendmail, направете следното:
в /etc/rc.conf нужда в следните направления:

sendmail_enable = "никой"
exim_enable = "YES"
# И за spamassasin и ClamAV:
clamav_clamd_enable = "YES"
spamd_enable = "YES"


На следващо място, създаден доставянето на пощата за местните приложения чрез Exim, за които ние /etc/mail/mailer.conf файл трябва да изглежда така:

Sendmail / ЮЕсАр / местни / sbin / ИВ
изпрати имейл / ЮЕсАр / местни / sbin / ИВ
mailq / ЮЕсАр / местни / sbin / ИВ -bp
newaliases / ЮЕсАр / местни / sbin / ИВ -бифенил
hoststat / ЮЕсАр / местни / sbin / ИВ
purgestat / ЮЕсАр / местни / sbin / ИВ


Следваща се процедира, за да изберете ClamAV: отидете в / ЮЕсАр / местни / и т.н. / и копирайте clamav.conf.sample в clamav.conf и дясната страна, за да се приеме връзка чрез TCP / IP, а не чрез местен гнездо, което в clamav.confnuzhny
следните редове:

TCPSocket 3310
TCPAddr 127.0.0.1

След това копирайте freshclam.conf.sample в freshclam.conf. Този файл определя настройките за freshclam програма се използва за актуализиране на базата данни antifirusnyh ClamAV на.

SpamAssasin работи без допълнително конфигуриране.

Нека да се пристъпи към следващата част - създаване courier'a. Сървърът за IMAP за своята работа използва няколко процеси, които, от своя страна, е конфигурирана от различни конфигурационни файлове. В моя пример 3 е стартиран процеса - authdaemon, куриерски-imapd и куриерски-imapd-SSL. Тя е отворена за външния свят
Само куриер-imapd-SSL. На първо място, да създаде сертификат за imapd-SSL за TLS връзки с imapd:

поправяме /usr/local/etc/couier-imap/imapd.cnf файл за неговото DN за сертификата, който отчасти предписва req_dn настройките си (не забравяйте, че КН трябва да съответства на FQDN на IMAP сървъра):

[Req_dn]
С = RU
област ST = Москва
L = Москва
О = Tehnopark
ОУ = Интернет технологиите
CN = test.ru
[email protected]

На следващо място, генериране на удостоверение специален скрипт:

CD / ЮЕсАр / местни / акции / куриер-IMAP /
./ mkimapdcert

След това изберете IMAP удостоверяване:
CD / ЮЕсАр / местни / и т.н. / куриер-IMAP /
кп authdaemonrc.dist authdaemonrc
по-късно в authdaemonrc замени списъка на модули за удостоверяване:

Сега куриер знае какво трябва да се удостовери чрез pgsql. Необходимо е само да се конфигурира pgsql модул, чиито настройки се съхраняват в authpqsqlrc. Тя трябва да съдържа следното:

настройки # Таблица за удостоверяване, тук сме, посочете кои области
# таблици се съхраняват различни потребителски данни:
PGSQL_USER_TABLE сметки
PGSQL_CLEAR_PWFIELD парола
DEFAULT_DOMAIN test.ru
PGSQL_UID_FIELD UID
PGSQL_GID_FIELD GID
PGSQL_LOGIN_FIELD вход
PGSQL_HOME_FIELD дома
PGSQL_NAME_FIELD GECOS
PGSQL_MAILDIR_FIELD Maildir


Ние се обръщаме към настройка директно imapd:
skopriuem imapd.dist в imapd. Правото на следните редове (за други настройки
по подразбиране са подходящи):

# По подразбиране, NO, което правим, за да YES, така че той може да работи imapd
IMAPDSTART = ДА

Тези настройки по принцип са достатъчни. След това копирайте imapd-ssl.dist в imapd-SSL и
Правила, в следните насоки:

След това направете тече куриер-IMAP при стартиране. За да направите това, отидете на /usr/local/etc/rc.d и пак малко popereimenovyvaem файлове:

# Mv куриер-IMAP-imapd-ssl.sh.sample courier-imap-imapd-ssl.sh
# Mv куриер-IMAP-imapd.sh.sample courier-imap-imapd.sh


След това, ние считаме, че нашата поща система е почти готова. Трябва само малко ponastraivat SquirrelMail защо отиваме в / ЮЕсАр / местни / WWW / SquirrelMail и стартирате ./configure скрипта. По принцип, конфигурацията на интерфейса е ясно, без допълнително обяснение, защото аз не съм наистина живее по този въпрос (не забравяйте най-важното, уточни IMAP сървър и SMTP). Ние правим символна връзка към / ЮЕсАр / местни / WWW / SquirrelMail на всяка VirtualHost'a или директно под DocumentRoot на Apache. Тук по принцип и всички.

Има някои особености в навечерието SquirrelMail когато защитният режим в PHP. Първо на всички PHP файлове и директории SquirrelMail трябва да принадлежат на потребителя, от който започва да тече Apache (VirtualHost или глобална настройка по подразбиране - WWW: nogroup). Освен това трябва да промените разрешенията в / Var / макара / SquirrelMail:

# CHMOD 1777 / Var / макара / SquirrelMail / прикачвате
# Коригират 1777 / Var / макара / SquirrelMail / Pref


Е, собственик зададете същите, както в / ЮЕсАр / местни / WWW / SquirrelMail.


В края на списък с полезни връзки:

Свързани статии

Подкрепете проекта - споделете линка, благодаря!