от Н. Антонов(17-11-2003)

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

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

Postfix.html

Postfix - бърз, сигурен и лесен за управление

В тази статия ще се опитам да насоча вниманието ви към Postfix - приложение, което се ползва с репутацията на един от най-сигурните, бързи и лесни за администрация пощенски сървъри. Статията не цели да бъде пълноценно HowTo, по-скоро - кратко описание на някои от най-често използваните възможности на Postfix. Специалистите казват, че освен всичко Postfix е съвместим със Sendmail, което гарантира лесната миграция от единия към другия сървър. Това е добра новина за администраторите, които се притесняват от проблемите със сигурността, които понякога се появяват при Sendmail.

Предполага се, че можете да си инсталирате Postfix на системата и вече сте го сторили. Конфигурацията на Postfix обикновено се намира в /etc/postfix, а пощенската опашка по подразбиране можете да откриете във /var/spool/postfix. Най-важна за нас е директорията /etc/postfix. Тя съдържа два конфигурационни файла и различните видове таблици (maps) като aliases, virtual, transport, access и т.н. Таблиците са едно понятие, което трябва да изясним.

Таблиците представляват файлове, бази от данни, които сървърът чете и на базата на които определя поведението си. Съществуват няколко формата, в които могат да се създават таблици - hash, dbm, nis и файлове с регулярни изрази в ASCII. Таблицита се създават с командата postmap. Подразбиращият се формат е hash.

  • Таблицата aliases (/etc/postfix/aliases)

Почти всяка дистрибуция идва по подразбиране с таблицата aliases, където се описват псевдонимите на потребителите съм дадена система. Postfix също ползва тази таблица. За целта в конфигурационният му файл трябва да има ред от този тип:

alias_maps = hash:/etc/postfix/aliases

Твърде възможно е по подразбиране да чете в /etc/aliases от съображения за съвместимост.

Форматът на тази таблица е идентичен на формата при Sendmail. Логиката е следната:

local-user: alias

user@[some-machine, some-machine@somedomain]

root: pete@guardiandigital.com

Ако домейнът на машината е например domain.com, съгласно тази таблица писмата до root@domain.com ще се препращат към pete@guardiandigital.com. След всяко редактиране на /etc/postfix/aliases трябва да регенерираме базата от данни във формата hash.

postalias hash:/etc/postfix/aliases

Това е единствената таблица, която се управлява не с командата postmap, а с командата postalias. Вместо да пишем горната команда, можем да постигнем същото и с:

newalises

  • Таблицата virtual (/etc/postfix/virtual)

С тази таблица можем да дефинираме виртуалните домейни и техните потребители, като инструктираме сървъра да препраща писмата, изпратени примерно до user1@domain.com в друга посока, която може да бъде друг локален потребител или потребител на друг домейн, както и цяла комбинация от потребители. Типичният формат при описанието на виртуалните домейни е този:

DOMAINNAME1 XXXXXXX

user1@DOMAINNAME local-user

user2@DOMAINNAME user@someotherdomain

user3@DOMAINNAME user@someotherdomain, user@anotherdomain, ...

.

.

@DOMAINNAME local-user or user@somedomain (OPTIONAL)

Ето и конкретен пример:

linuxseclabs.net VIRTUALDOMAIN

bill@linuxseclabs.net bill

joe@linuxseclabs.net joe@guardiandigital.com

@linuxseclabs.net pete@guardiandigital.com

В случая, няма значение какво ще напишем на мястото на ХХХХХХХ. След редактиране на тази таблица, освен задължителното регенериране с командата postmap, трябва да презаредим и конфигурацията на сървъра:

postfix reload

  • Таблицата transport (/etc/postfix/transport)

Тук казваме на сървъра какво да прави със съобщения, изпратени до домейн, пощата на който например се обработва на друга машина или посредством друг протокол, TCP-порт... С една дума, Postfix просто трябва да ги транспортира.

Типичен пример:

demo.guardiandigital.com smtp:smtp.demo.guardiandigital.com

Сега писмата до домейна вляво ще отиват към домейна вдясно през протокол SMTP. Различните видове транспортиране са описани в /etc/postfix/master.cf. В този файл можете да описвате собствени видове транспортиране. Например, ако искате всички писма да минават през антивирусна проверка от Amavis, който слуша на порт 10025, в този файл можете да дефинирате как става транспортирането. Това обаче не е предмет на този материал.

  • Други видове таблици

  • relocated - Тук се описва информация за т. нар. bounce messages, свързани с потребители, които не съществуват в тази система.
  • access - Описание за избирателния ред, по който сървърът обработва съобщенията от специфични хостове, домейни, мрежи или адреси.
  • canonical - Таблица, в която можем да опишем адресите за локални е нелокални потребители. Тази таблица се използва от демона cleanup.

Конфигурацията

  • Main.cf

Това е главният конфигурационен файл. В него могат да бъдат описани повече от 200 конфигурационни параметъра! Тъй като повечето от тях са настроени по подразбиране, тук ще обърнем внимание само на тези, които най-често пъти се налага да пипнем сами.

  • Параметърът myorigin описва домейна, който се обслужва локално и от който сървърът ще изпраща писмата.

myorigin = $myhostname

  • Параметърът mydestination описва дестинацията, до която сървърът ще приема адресираните писма.

mydestination = $myhostname, localhost.$mydomain, $mydomain

Ако имаме само този параметър, сървърът ще отхвърля автоматично всички писма, които не са адресирани до горепосочените дестинации.

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

alias_maps = hash:/etc/postfix/aliases

alias_database = hash:/etc/postfix/aliases

virtual_maps = hash:/etc/postfix/virtual

transport_maps = hash:/etc/postfix/transport

  • Параметърът relay_domains се използва, когато искате да посочите други домейни, освен основния, за които сървърът ще приема обработва пощата.

relay_domains = $mydestination, linuxseclabs.com, linuxseclabs.net

  • Параметърът mynetworks е много важен за сигурността!!! Не забравяйте да го настроите. С този параметър ограничаваме потребителите, които ще могат да ипращат писма чрез този сървър, по мрежи или хостове. Ако го пропуснем, това означава, че всеки може да ползва сървъра за SMTP, което е добре дошло за саморазпращащите се вируси и спамерите.

mynetworks = 127.0.0.0/8, 192.168.0.0/24, 194.135.73.15

  • Параметърът relayhost се използва, когато искаме сървърът да не изпраща писмата директно, а посредством друг SMTP-сървър. Например, нашият мейлсървър няма публичен IP-адрес в интернет, а се намира само в локалната ни мрежа, тогава можем да го настроим да изпраща писмата чрез друг сървър с публичен адрес.

relayhost = 175.210.73.117

Управление на сървъра

  • postconf - показва текущата конфигурация
  • postconf -d - показва подразбиращата се конфигурация така, както е зададена от авторите му
  • postconf -n - показва само тези текущи настройки, които се различават от настройките по подразбиране
  • пускане/спиране/презареждане

/etc/init.d/postfix start

/etc/init.d/postfix stop

/etc/init.d/postfix restart

  • изчистване на опашката

postfix flush

  • проверка на съдържанието в дадена таблица

postmap -q keymap

Например:

[root@demo postfix]# postmap -q linuxseclabs.com transport

smtp:orion-t.secure.linuxseclabs.com

[root@demo postfix]#

  • показване на писмата в опашката

mailq

Например:

[root@juggernaut postfix]# mailq

-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------

BF09A11D315 1125 Mon May 21 14:30:24

vuln-newsletter-admins@linuxsecurity.com

(Name service error for ec.ucdb.br: Host not found, try again)

SOMEHOST@SOMEDOMAIN.COM

  • показване на файловете в опашката

postcat queuefile

Например:

root@demo ]# find /var/spool/postfix/active -type f active/B/8/B8E7611D302

[root@demo ]# postcat active/B/8/B8E7611D302

  • изтриване на писма от опашката

Можем да потърсим писмата, които са обозначени по специфичен начин и едва след това да ги изтрием. Например, застояват в опашката, защото не могат да бъдат изпратени поради някаква грешка (грешен адрес в To:).

find /var/spool/postfix -name "IDENTIFIER" -exec rm {} \;

След като сме изтрили дадено писмо, трябва да стартираме командата mailq.

Ако искаме да премахнем цяла опашка, можем да го направим така:

postsuper -d queueID

След като разгледахме някои основни аспекти в настройката и управлението на Postfix, за по-любознателните бих препоръчал документацията. Postfix притежава, разбира се, и много други възможности, които не са предмет на този материал и изискват по-задълбочено изучаване на този бърз, сигурен и лесен за управление пощенски сървър.



<< Чудният свят на Линукс 2.6 | Въведение в Z Shell >>