Postfix null client

Материал из pNp Wiki
Перейти к: навигация, поиск

Конфигурирование Postfix как null client

Предварительные требования

  • Виртуальная машина с двумя сетевыми интерфейсами
  • Установленные пакеты: bash-completion, policycoreutils, policycoreutils-python, policycoreutils-devel, setroubleshoot-server, postfix, mailx, mutt

Общая информация и терминология

null client - это машина которая может только отправлять почту. Машина только пересылает всю почту на другой почтовый релей, который и занимается дальнейшей доставкой. Сама же машина не получает почту по сети и не занимается доставкой локальной почты. Обычно null client использует протоколы POP или IMAP для доступа к почтовым ящикам.

Параметр Значение
inet_interfaces Параметр указывает на какой интерфейс почтовой системы будут приходить письма. По-умолчанию слушается только localhost
myorigin Параметр указывает на домен из которого исходит почтовое сообщение. Часто используется для исключения конкретной машины, из адреса отправителя.
relayhost Параметр указывает на сервер, на который пересылается исходящая почта. Если параметр указан в квадратных скобках [], то поиск MX записи в DNS не производится
mydestination Параметр указывает на список доменов, для которых данная машина является конечным адресатом. Письма адресованные данным доменам доставляются локально. Письма адресованные доменам не входящим в список - отвергаются
local_transport Параметр указывает на то, как письма адресованные доменам из списка $mydestination должны доставляться. Для серверов которые не должны получать локальную почту вообще выставляется в значение "error: сообщение об ошибке". Рекомендуется выставлять в error: local delivery disabled.
mynetworks Параметр указывает на список сетей, разделяемый пробелом и/или запятой которым разрешается отправлять почту без прохождения дальнейшей аутентикации.

Настройка почтового сервера Postfix

Производится двумя путями - непосредственным редактированием конфигурационного файла /etc/postfix/main.cf, либо применением утилиты postconf c ключом -e, которая позволяет вводить значения из командной строки. В литературе для подготовки к экзаменам почему-то рекомендуют второй метод, поэтому будем использовать утилиту:

  • Указываем на какой интерфейс будут приходить письма
[root@vm-02 ~]# postconf -e 'inet_interfaces = loopback-only'
  • Указываем домен исходящих сообщений
[root@vm-02 ~]# postconf -e 'myorigin = vm-02.example.com'
  • Указываем сервер, на который будем пересылать почту
[root@vm-02 ~]# postconf -e 'relayhost = [vm-01.example.com]'
  • Указываем список доменов являющихся конечным адресатом
[root@vm-02 ~]# postconf -e 'mydestination = '
  • Выставляем сообщение об ошибке
[root@vm-02 ~]# postconf -e 'local_transport = error: local delivery disabled'
  • Указываем список сетей, откуда можно отправлять почту
[root@vm-02 ~]# postconf -e 'mynetworks = 127.0.0.1 [::1]/128'

При помощи команды postconf -n можно посмотреть директивы которые определены в конфигурационном файле /etc/postfix/main.cf:

[root@vm-02 ~]# postconf -n
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
debug_peer_level = 2
debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5
html_directory = no
inet_interfaces = loopback-only
inet_protocols = all
local_transport = error: local delivery disabled
mail_owner = postfix
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
mydestination =
mynetworks = 127.0.0.1 [::1]/128
myorigin = vm-02.example.com
newaliases_path = /usr/bin/newaliases.postfix
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix-2.10.1/README_FILES
relayhost = [vm-01.example.com]
sample_directory = /usr/share/doc/postfix-2.10.1/samples
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
unknown_local_recipient_reject_code = 550
[root@vm-02 ~]#

Так же следует проверить разрешения на файлы и наличие нужных директорий для работы почтового сервиса, запустив утилиту postfix:

[root@vm-02 ~]# postfix check
[root@vm-02 ~]#

После изменения конфигурационного файла, необходимо перезапустить сервис:

[root@vm-02 ~]# systemctl restart postfix
[root@vm-02 ~]# systemctl is-active postfix.service 
active
[root@vm-02 ~]#

Проверка

С виртуальной машины vm-02 напишем письмо:

[root@vm-02 ~]# printf 'This is a test email. You you are reading this, it means that mail has been recieved successfully!\n'> mail.txt 
[root@vm-02 ~]# cat mail.txt 
This is a test email. You you are reading this, it means that mail has been recieved successfully!
[root@vm-02 ~]#

И отправим его: