Это вторая часть.
Первая часть тут>>>.
Третья часть тут>>>.
Приступаем к установке MTA Postfix:
# cd /usr/ports/mail/postfix/ # make config-recursive
# make install clean
В процессе нам предлагает сконфигурировать и установить Dovecot:
В процессе установки будет вопрос:
Would you like to activate Postfix in /etc/mail/mailer.conf [n]? y
Если устанавливаем как полную замену SMTP-сервера, то отвечаем Y. Sendmail использоваться в данном случае не будет вообще, так что заменяем.
Отредактируем файлы конфигурации, первым – /usr/local/etc/postfix/main.cf:
# cat /usr/local/etc/postfix/main.cf | grep -v '^#' | sed '/^$/d' | more #Настройки каталогов queue_directory = /var/spool/postfix command_directory = /usr/local/sbin daemon_directory = /usr/local/libexec/postfix data_directory = /var/db/postfix #Системный пользователь, которому будет "принадлежать" почта mail_owner = postfix #Различные сетевые настройки myhostname = akira.domain.org.ua mydomain = domain.org.ua myorigin = $myhostname inet_interfaces = all mydestination = $myhostname, localhost.$mydomain, localhost, 77.120.106.40 #Прочие настройки, достаточно описаны в самом файле local_recipient_maps = unix:passwd.byname $alias_maps unknown_local_recipient_reject_code = 550 mynetworks_style = host mynetworks = 127.0.0.0/8 relay_domains = alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases smtpd_banner = $myhostname ESMTP $mail_name debug_peer_level = 2 debug_peer_list = 127.0.0.1 debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5 sendmail_path = /usr/local/sbin/sendmail newaliases_path = /usr/local/bin/newaliases mailq_path = /usr/local/bin/mailq setgid_group = maildrop html_directory = /usr/local/share/doc/postfix manpage_directory = /usr/local/man sample_directory = /usr/local/etc/postfix readme_directory = /usr/local/share/doc/postfix #Т.к. мы используем MySQL для хранения данных, то ящики и домены считаются "виртуальными", указываем где и как искать информацию о них virtual_mailbox_base = /usr/mail virtual_alias_maps = proxy:mysql:/usr/local/etc/postfix/mysql_virtual_alias_maps.cf virtual_mailbox_domains = proxy:mysql:/usr/local/etc/postfix/mysql_virtual_domains_maps.cf virtual_mailbox_maps = proxy:mysql:/usr/local/etc/postfix/mysql_virtual_mailbox_maps.cf virtual_minimum_uid = 65534 virtual_uid_maps = static:65534 virtual_gid_maps = static:65534 virtual_transport = dovecot dovecot_destination_recipient_limit = 1 #Описываем аутентификацию, Т.к. в этих параметрах много чего важного - постараюсь описать все как можно подробнее. #Независимо от типа аутентификации этот параметр всегда должен быть включен smtpd_sasl_auth_enable = yes #Некоторые клиенты настаивают на использовании SASL аутентификации, если оно предлагается, даже если они не настроены на отправку учетных данных, - и поэтому они всегда терпят неудачу и отключаются. Для них скрываем свою возможность проводить аутентификацию smtpd_sasl_exceptions_networks = $mynetworks #Ограничиваем варианты аутентификации, как минимум noanonymous обязано быть smtpd_sasl_security_options = noanonymous #Не все клиенты проводят процесс аутентификации согласно RFC, для них делаем исключение broken_sasl_auth_clients = yes #По-умолчанию Postfix использует механизм аутентификации с Cyrus SASL, мы установим Dovecot smtpd_sasl_type = dovecot #Dovecot настроен на использование UNIX-сокета, указываем это Postfix-у smtpd_sasl_path = private/auth #Далее - настройки отсеивания нежелательной почты, хотя в этом варианте конфигурации блокируется только НЕ прошедшие проверку, используйте reject вместо permit в конце блока для изменения smtpd_client_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_pipelining permit smtpd_helo_restrictions = permit smtpd_sender_restrictions = permit_mynetworks permit_sasl_authenticated reject_non_fqdn_sender reject_unknown_sender_domain permit smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated reject_non_fqdn_recipient reject_unauth_destination reject_unknown_recipient_domain reject_unverified_recipient permit smtpd_data_restrictions = permit smtpd_end_of_data_restrictions = permit smtpd_etrn_restrictions = permit
На этом файл сохраняем.
Файл для проверки синонимов почтовых ящиков, postfix – пользователь, а mypassword – пароль к базе данных, который указывали при конфигурировании Postfix Admin в первой части. Сам файл находится тут – /usr/local/etc/postfix/mysql_virtual_alias_maps.cf. ВАЖНО: параметр query может меняться в зависимости от версии сервера, в описываемом примере используется postfix-2.9.3,1!
# cat /usr/local/etc/postfix/mysql_virtual_alias_maps.cf | grep -v '^#' | sed '/^$/d' | more user = postfix password = mypassword hosts = localhost dbname = postfix query = SELECT goto FROM alias WHERE address='%s' AND active = '1'
Файл для проверки почтовых доменов /usr/local/etc/postfix/mysql_virtual_domains_maps.cf:
# cat /usr/local/etc/postfix/mysql_virtual_domains_maps.cf | grep -v '^#' | sed '/^$/d' | more user = postfix password = mypassword hosts = localhost dbname = postfix query = SELECT domain FROM domain WHERE domain='%u'
Файл для проверки почтовых ящиков /usr/local/etc/postfix/mysql_virtual_mailbox_maps.cf:
# cat /usr/local/etc/postfix/mysql_virtual_mailbox_maps.cf | grep -v '^#' | sed '/^$/d' | more user = postfix password = mypassword hosts = localhost dbname = postfix query = SELECT CONCAT(domain,'/',maildir) FROM mailbox WHERE username='%s' AND active = '1'
В конец файла настройки процессов Postfix-а /usr/local/etc/postfix/master.cf добавляем указание работать с Dovecot через UNIX-сокет:
dovecot unix - n n - - pipe flags=DRhu user=nobody:nobody argv=/usr/local/libexec/dovecot/deliver -d ${recipient}
Проверяем конфигурацию:
# postfix check
Если ошибок нет – просто выдаст новую строку, если есть – укажет в какой строке и что именно:
# postfix check postfix: fatal: /usr/local/etc/postfix/main.cf, line 30: missing '=' after attribute name: "sdcsdc"
Ещё вариант ошибки – такой:
# postfix check postfix: fatal: /usr/local/etc/postfix/main.cf, line 702: missing '=' after attribute name: "permit"
В данном случае – не установлен отступ от начала строки в блоке:
smtpd_etrn_restrictions = permit
Вариантов записи два. Первый – каждый параметр с новой строки, с отступом от начала:
smtpd_etrn_restrictions = permit
Другой вариант – через запятую:
smtpd_etrn_restrictions = permit,<другие параметры через запятую>,
Запятая после последнего параметра в списке – обязательна.
Добавляем Postfix в запуск при загрузке системы в файл /etc/rc.conf:
postfix_enable="YES"
Запустим Postfix:
# service postfix start postfix/postfix-script: starting the Postfix mail system
И проверим его состояние:
# service postfix status postfix is running as pid 78100.
Переходим к третьей части – настройка Dovecot.