“local_interfaces
” содержит список IP адресов интерфейсов, которые слушаются. Каждый элемент может? опционально, определять порт.
В обоих случаях, дефолтовый разделитель списка - двоеточие, но он может быть изменён, как описано в разделе 6.19. Когда используются адреса IPv6, обычно, лучше изменять разделитель, чтобы избежать необходимости удваисать все двоеточия. Например:
local_interfaces = <; 127.0.0.1 ; \
192.168.23.65 ; \
::1 ; \
3ffe:ffff:836f::fe86:a061
|
Есть два различных формата для задания порта с IP-адресом в
“local_interfaces
”:
1. Порт добавлен в адрес, с разделеителем в виде точки. Например, для прослушивания порта 1234 на двух различных адресах:
local_interfaces = <; 192.168.23.65.1234 ; \
3ffe:ffff:836f::fe86:a061.1234
|
2. IP-адрес заключается в квадратные скобки, и порт добавляется с разделителем в виде двоеточия, например:
local_interfaces = <; [192.168.23.65]:1234 ; \
[3ffe:ffff:836f::fe86:a061]:1234
|
Когда прот не задан, используется значение
“daemon_smtp_ports
”. Дефолтовая настройка содержит лишь один порт:
Если перечислено более одного порта, каждый интерфейс, для которого не определён его собственный порт, слушает на всех них. Порты перечисленные в
“daemon_smtp_ports
” могут быть идентифицированы по имени (определённому в
“/etc/services
”), или по номеру. Однако, когда порты даны в с индивидуальными IP-адресами в
“local_interfaces
”, только номера (не имена) могут использоваться.
13.2 Специальный IP слушающий адреса
Адрес
“0.0.0.0
” и
“::0
” обрабатываются особенно. Они интерпретируются как
“все интерфейсы IPv4
” и
“все интерфейсы IPv6
”, соответственно. В каждом случае, exim говорит стеку TCP/IP
“слушать на всех интерфейсах IPvx
” вместо установки отдельных слушающих сокетов для каждого интерфейса. Дефолтовое значение
“local_interfaces
”:
local_interfaces = 0.0.0.0
|
когда exim собран без поддержки IPv6; иначе оно:
local_interfaces = <; ::0 ; 0.0.0.0
|
Таким образом, по умолчанию, exim слушает все доступные интерфейсы, на SMTP-порту.
13.3 Отмена
“local_interfaces
” и
“daemon_smtp_ports
”
Опция командной строки
“-oX
” может быть использована для переопределения значений
“daemon_smtp_ports
” и/или
“local_interfaces
” для специфичаского случая даемона. Другой способ сделать это состоял бы в использовании макроса и опции
“-D
”. Однако,
“-oX
” может использоваться лишь административными пользователями, тогда как модификация рабочей конфигурации, использованием опции
“-D
”, разрешена только когда вызывающий - root или пользователь exim`a.
Значение
“-oX
” - список значений. Дефолтовый разделитель, двоеточие, может быть изменён обычным способом, если требуется. Если есть элементы не содержащие точек или двоеточий (т.е. не IP адреса), значение
“daemon_smtp_ports
” заменяется списком этих элементов. Если тут есть какие-то пункты содержащие точки или двоеточия, значение
“local_interfaces
” заменяется этими элементами. Таким образом, например:
перезадаёт
“daemon_smtp_ports
”, но оставляет
“local_interfaces
” неизменным, тогда как
перезадаёт
“local_interfaces
”, оставляя неизменным
“daemon_smtp_ports
”. (Однако, с этого момента
“local_interfaces
” не содержит элементов без портов, и в этом примере значение
“daemon_smtp_ports
” неуместно.)
13.4 Поддержка устаревшего протокола SSMTP (или SMTPS)
Exim поддерживает устаревший протокол SSMTP (также известный как SMTPS), который использовался прежде чем для SNMP была стандартизована команда STARTTLS. Некоторые старый клиенты до сих пор используют этот протокол. Если опция
“tls_on_connect_ports
” установлена в список портов, подключение к этим портам должно использовать SSMTP. Обычное использование этой опции - такое:
tls_on_connect_ports = 465
|
поскольку 465 - обычный порт используемый старыми клиентами. Также есть опция командной строки
“-tls-on-connect
”, которая вынуждает все порты вести себя так, при старте даемона.
Предупреждение: Установка
“tls_on_connect_ports
” не вынуждает даемома слушать пречисленные в ней порты. Вы всё равно должны задать
“daemon_smtp_ports
”,
“local_interfaces
” или
“-oX
”. (Это так, потому что
“tls_on_connect_ports
” обращается к подключениям через
“inetd
” также, как и к подключениям через даемон)
13.5 Области адресов IPv6
Адреса IPv6 имеют
“области
” (
“scopes
”), и хост с многими аппаратными интерфейсами, в принцмпе, может иметь один и тотже локальный (не до конца понятно, в документации это обозвано link-local - локальный, или локально ссылающийся, чтоли... Не очень я знаю IPv6 - прим. lissyara) адрес IPv6 на различных интерфейсах. Таким образом, необходима дополнительная информация, кроме IP-адреса, чтобы различать индивидуальные интерфейсы. В некоторых случаях, было принято соглашение, о использовании символа процента, сопровождаемого чем-либо (часто - именем интерфейса), приводя к адресам вроде такого:
fe80::202:b3ff:fe03:45c1%eth0
|
Для согласования этого использования, символ процента, сопровождаемый произвольной строкой, разрешён в конце адреса IPv6. По дефолту, exim вызывает
“getaddrinfo()
”, чтобы преобразовать текстовый адрес IPv6 для фактического использования. Эта функция распознаёт соглашение процента в операционных системах, которые поддерживают его, и соответственно обрабатывают адрес. К сожалению, некоторые старые библиотеки имеют проблемы с
“getaddrinfo()
”. Если
установлена в
“Local/Makefile
” (или в ОС-зависимом
“Makefile
”) когда exim собирается, exim использует
“inet_pton()
” для конвертации текстового адреса IPv6 в реально используемый, вместо
“getaddrinfo()
”. (До версии 4.14, всегда использовалась эта функция.) Конечно, это означает, что дополнительные возможности
“getaddrinfo()
” - распознание областей адресов - потеряны.
13.6 Отключение IPv6
Иногда случается, что бинарник exim`a собранный с поддержкой IPv6, запускается на хосте, ядро которого не знает о IPv6. Бинарник продолжает использовать IPv4, но это может вызывать пустую растрату ресурсов на поиск AAAA записей, и попыток коннекта к адресам IPv6, вызывающие задержки в доставке почты. Если вы устанвите опцию
“disable_ipv6
” в
“истина
”, даже когда бинарник exim`a поддерживает IPv6, IPv6 не активируется. AAAA записи никогда не ищутся, и любые адреса IPv6 перечисленные в
“local_interfaces
”, данных для маршрутизатора
“manualroute
” и т.д. - игнорируются. Eсли IP литералы включены (доставка не по имени а по IP - прим. lissyara), роутер
“ipliteral
” отказывается обрабатывать адреса IPv6.
C другой стороны, когда используется IPv6, могут быть моменты, когда вы хотите отключить его для определённых хостов или доменов. Вы можете использовать опцию
“dns_ipv4_lookup
” для глобальног подавления поиска AAAA записей для указанных доменов, и можете использовать общую опцию роутеров
“ignore_target_hosts
”, для игнорирования адресов IPv6 в индивидуальном роутере.
13.7 Примеры запуска слушающего даемона
Дефолтовый случай в среде IPv6 таков:
daemon_smtp_ports = smtp
local_interfaces = <; ::0 ; 0.0.0.0
|
Этим определяется слушать smtp-порт на всех интерфейсах IPv4 и IPv6. Могут использоваться один или два сокета, в зависимости от характеристик стека TCP/IP. (Это запутанно, и беспорядочно; для дополнительной информации прочтите комментарии в файле исходников
“daemon.c
”)
Для задания прослушивания портов 25 и 26 на всех интерфейсах:
daemon_smtp_ports = 25 : 26
|
(оставляя
“local_interfaces
” с дефолтовыми настройками), или, более явно:
local_interfaces = <; ::0.25 ; ::0.26 \
0.0.0.0.25 ; 0.0.0.0.26
|
Для того, чтобы слушать на дефолтовом порту всех IPv4 интерфейсов и порту 26, только на адресе обратной петли:
local_interfaces = 0.0.0.0 : 127.0.0.1.26
|
Для того, чтобы слушать на дефолтовом порту, только на специфических интерфейсах:
local_interfaces = 192.168.34.67 : 192.168.34.67
|
Предупреждение: Такая установка исключает прослушивание интерфейса обратной петли.
13.8 Распознание локального хоста
Опция
“local_interfaces
” также используется, когда exim`y необходимо определить, действительно ли IP адрес относится к локальному хосту. таким образом, все IP-адреса, на которых слушает даемон, всегда обрабатываются как локальные.
Для этого использования, номера портов в
“local_interfaces
” игнорируются. Если встречается один из двух элементов
“0.0.0.0
” или
“::1
”, exim получает полный список доступных интерфейсов от операционной системы, и извлекает уместные (т.е. IPv4 или IPv6) адреса, чтобы использовать для проверки.
Некоторые системы устанавливают большое число вирутальных интерфейсов, для обеспечения большого числа виртуальных серверов в сети. В этой ситуации, вы можете захотеть слушать лишь некоторые доступные интерфейсы для получения почты, но обрабатывать все локальные интерфейсы как местные, при роутинге. Вы можете сделать это установкой
“extra_local_interfaces
” в список IP-адресов, возможно, включая подстановочное значение
“все
”. Эти адреса распознаются как локальные, но не используются для прослушивания. Рассмотрите этот пример:
local_interfaces = <; 127.0.0.1 ; ::1 ; \
192.168.53.235 ; \
3ffe:2101:12:1:a00:20ff:fe86:a061
extra_local_interfaces = <; ::0 ; 0.0.0.0
|
даемон слушает на интерфейсе обратной петли, и лишь на одном адресе IPv4 и одном адресе IPv6, но все доступные интерфейсы обрабатываются как локальные, при роутинге.
В некотором количестве окружения, имя локального хоста может быть в списке MX, но с IP-адресом не назначенным ни одному местному интерфейсу. В других случаях, может быть желательным обработать другие имена хостов, как будто они ссылаются на локальный хост. Оба этих случая могут быть обработаны установкой опции
“hosts_treat_as_local
”. Она содержит имена хостов, а не IP-адреса. Когда на хост ссылаются в процессе маршрутизации, или через MX-запись, или непосредственно, он обрабатывается как локальный хост, если его имя совпадает с
“hosts_treat_as_local
”, или если любой из его IP-адресов совпадает с
“local_interfaces
” или
“extra_local_interfaces
”.
13.9 Доставка к удалённому хосту
Доставка к удалённому хосту обрабатывается smtp-транспортом. По-умолчанию, это позволяет системным функциям TCP/IP выбирать, какой интерфейс использовать (если их больше одного) при соединении с удалённым хостом. Однако, опцией
“interface
” может быть установлено, какой интерфейс использовать. Смотрите описание smtp-транспотра в разделе 30, для получения дополнительных деталей.
=============
translated by lissyara
Ссылка на обсуждение: http://forum.lissyara.su/viewforum.php?f=20.