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.
Конфигурацията
Това
е главният конфигурационен файл. В него могат да бъдат описани повече
от 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 притежава, разбира се, и много други
възможности, които не са предмет на този материал и изискват
по-задълбочено изучаване на този бърз, сигурен и лесен за управление
пощенски сървър.