exim4 (настройка нескольких интерфейсов)
Модераторы: SLEDopit, Модераторы разделов
-
tema323
- Сообщения: 7
- ОС: debian5
exim4
Доброго времени суток! Столкнулся с такой проблемой что после установки на виртуальный сервер exim4 на ось дебиан 5.0 он слушает только один IP, у меня на сервере еще прописаны несколько IP и он их не хочет слушать, почта отправляется и принимается только на одном IP. Где то прочитал, что надо конфиг exim пересобирать по кускам, но не знаю как сделать, посоветуйте как правильно, плизз! Хотя вроде по умолчанию он должен все интерфейсы слушать, однако на деле нехочет.
-
sim1
- Сообщения: 155
- ОС: GNU,BSD
Re: exim4
tema323 писал(а): ↑06.06.2009 12:01Доброго времени суток! Столкнулся с такой проблемой что после установки на виртуальный сервер exim4 на ось дебиан 5.0 он слушает только один IP, у меня на сервере еще прописаны несколько IP и он их не хочет слушать, почта отправляется и принимается только на одном IP. Где то прочитал, что надо конфиг exim пересобирать по кускам, но не знаю как сделать, посоветуйте как правильно, плизз! Хотя вроде по умолчанию он должен все интерфейсы слушать, однако на деле нехочет.
для этого в конфиге нужно указать
Код: Выделить всё
local_interfaces = 127.0.0.1 : IP1 : IP2 : IP3ссылка по теме http://www.exim.org/exim-html-4.40/doc/html/spec_13.html
Разработка программ для *nix
-
tema323
- Сообщения: 7
- ОС: debian5
Re: exim4
Спасибо конечно за ответ! Ну этот способ я уже испытывал, ни чего мне не помогло. как прослушивался один интерфейс так и прослушивается.
я делал так: прописал
local_interfaces = 127.0.0.1 : IP1 : IP2 : IP3
добавил
# listen on all all interfaces?
.ifdef MAIN_LOCAL_INTERFACES
local_interfaces = MAIN_LOCAL_INTERFACES
.endif
и все равно не помогло. Один гуру мне подсказал, что конфиг надо пересобирать полностью и при чем собирать его по кускам, как объяснил, что это особенность именно debian, но как пересобрать он не стал говорить, бизнес у него такой :-) а мне денег было жалко платить, хочу сам научиться, в гугле ни где ни чего не нашел на эту тему, может плохо искал, не знаю, но вроде много где смотрел, но ни чего не нашел. Может кто-нибудь покажет свой конфиг, у кого подобное решение работает?
я делал так: прописал
local_interfaces = 127.0.0.1 : IP1 : IP2 : IP3
добавил
# listen on all all interfaces?
.ifdef MAIN_LOCAL_INTERFACES
local_interfaces = MAIN_LOCAL_INTERFACES
.endif
и все равно не помогло. Один гуру мне подсказал, что конфиг надо пересобирать полностью и при чем собирать его по кускам, как объяснил, что это особенность именно debian, но как пересобрать он не стал говорить, бизнес у него такой :-) а мне денег было жалко платить, хочу сам научиться, в гугле ни где ни чего не нашел на эту тему, может плохо искал, не знаю, но вроде много где смотрел, но ни чего не нашел. Может кто-нибудь покажет свой конфиг, у кого подобное решение работает?
-
vlakas
- Сообщения: 109
- ОС: Linux Debian
Re: exim4
tema323 писал(а): ↑06.06.2009 14:36Спасибо конечно за ответ! Ну этот способ я уже испытывал, ни чего мне не помогло. как прослушивался один интерфейс так и прослушивается.
я делал так: прописал
local_interfaces = 127.0.0.1 : IP1 : IP2 : IP3
добавил
# listen on all all interfaces?
.ifdef MAIN_LOCAL_INTERFACES
local_interfaces = MAIN_LOCAL_INTERFACES
.endif
и все равно не помогло. Один гуру мне подсказал, что конфиг надо пересобирать полностью и при чем собирать его по кускам, как объяснил, что это особенность именно debian, но как пересобрать он не стал говорить, бизнес у него такой :-) а мне денег было жалко платить, хочу сам научиться, в гугле ни где ни чего не нашел на эту тему, может плохо искал, не знаю, но вроде много где смотрел, но ни чего не нашел. Может кто-нибудь покажет свой конфиг, у кого подобное решение работает?
Единствення особенность exim4 в Debian состоит в том, что конфиг, действительно можно расбросать по более мелким файлам, но, по-моему, не рекомендуеться так делать. Но все равно на с вашей проблемой это никак не связано, уверяю. Вышеуказанный способ должен работать (сам недавно поднимал на Debian 5). Глупое замечание, конечно, но может быть вы не перезапустили службу exim4 или не перезапустили всю ОС?
Если проблемы не в моготу:
# dpkg-reconfigure exim4-config
Желательно старые конфиги сохранить, если в них есть что-то ценное
-
sim1
- Сообщения: 155
- ОС: GNU,BSD
Re: exim4
tema323 писал(а): ↑06.06.2009 14:36Спасибо конечно за ответ! Ну этот способ я уже испытывал, ни чего мне не помогло. как прослушивался один интерфейс так и прослушивается.
я делал так: прописал
local_interfaces = 127.0.0.1 : IP1 : IP2 : IP3
добавил
# listen on all all interfaces?
.ifdef MAIN_LOCAL_INTERFACES
local_interfaces = MAIN_LOCAL_INTERFACES
.endif
хм ...
нужно написать
Код: Выделить всё
local_interfaces = 127.0.0.1 : IP1 : IP2 : IP3где вместо IP1 : IP2 : IP3 написать свои ип адреса вместо, типа
Код: Выделить всё
local_interfaces = 127.0.0.1 : 192.168.100.1 : 192.168.110.2 : 192.168.120.3ставите либо так либо используется то, что у вас
Код: Выделить всё
.ifdef MAIN_LOCAL_INTERFACES
local_interfaces = MAIN_LOCAL_INTERFACES
.endifно тогда вам нужно задать или изменить макрос MAIN_LOCAL_INTERFACES для ваших нужд, типа
Код: Выделить всё
MAIN_LOCAL_INTERFACES = 127.0.0.1 : 192.168.110.1 : 192.168.100.2 : 192.168.120.3этот макрос должен быть включен до объявления local_interfaces и, конечно же, указать свои ип адреса
Разбивать конфиг на куски или нет решаете вы однако для того, чтобы заставить его слушать несколько ИП адресов этого делать необязательно.
Разработка программ для *nix
-
tema323
- Сообщения: 7
- ОС: debian5
Re: exim4
ну конечно же я прописывал свои IP адреса а не тупо вставлял то что здесь написано! я конечно новичек, но не совсем тупой :-)
перепробывал все варианты ни чего не получилось. вот мой конфиг, может это разъяснит ситуацию.
перепробывал все варианты ни чего не получилось. вот мой конфиг, может это разъяснит ситуацию.
Код: Выделить всё
POSTGREY_SOCKET = inet:127.0.0.1:60000
SA_ENABLE = yes
POSTGREY_SOCKET = inet:127.0.0.1:60000
log_selector = \
+all_parents \
+lost_incoming_connection \
+received_sender \
+received_recipients \
+tls_cipher +tls_peerdn \
+smtp_confirmation \
+smtp_syntax_error \
+smtp_protocol_error
# CONFDIR=__ISP_CONFDIR__
# daemon_smtp_port = 25:465
# tls_certificate = CONFDIR/certificate.crt
# tls_privatekey = CONFDIR/certificate.key
# tls_on_connect_ports = 465
.ifdef MAILMAN_ENABLE
MAILMAN_HOME=__MAILMAN_HOME__
MAILMAN_WRAP=__MAILMAN_WRAP__
MAILMAN_USER=__MAILMAN_USER__
MAILMAN_GROUP=__MAILMAN_GROUP__
.endif
# listen on all all interfaces?
.ifdef MAIN_LOCAL_INTERFACES
local_interfaces = MAIN_LOCAL_INTERFACES
.endif
.ifndef FREEBSD
local_interfaces = 127.0.0.1 : мой IP : мой IP : мой IP
.endif
domainlist local_domains = lsearch;/etc/exim4/domains
domainlist dummy_domains =
hostlist relay_from_hosts = 127.0.0.1 : мой IP : мой IP : мой IP
domainlist relay_to_domains = lsearch;/etc/exim4/domains
exim_user = Debian-exim
exim_group = Debian-exim
never_users = root
host_lookup = *
rfc1413_hosts = *
rfc1413_query_timeout = 0s
ignore_bounce_errors_after = 2d
timeout_frozen_after = 7d
acl_smtp_rcpt = acl_check_rcpt
acl_smtp_data = acl_check_data
begin acl
acl_check_rcpt:
accept hosts = net-lsearch;/etc/exim4/whitelist
deny hosts = net-lsearch;/etc/exim4/blacklist
message = $host_data
deny message = Restricted characters in address
domains = +local_domains
local_parts = ^[.] : ^.*[@%!/|]
deny message = Restricted characters in address
domains = !+local_domains
local_parts = ^[./|] : ^.*[@%!] : ^.*/\\.\\./
accept local_parts = postmaster
verify = recipient
domains = +local_domains
require verify = sender
accept hosts = +relay_from_hosts
control = submission
accept authenticated = *
condition = ${if eq{${extract{5}{:}{${lookup{$authenticated_id}lsearch{/etc/exim4/passwd}}}}}{no} {yes}{no}}
condition = ${if eq{${extract{3}{:}{${lookup{${domain:$authenticated_id}}lsearch{/etc/exim4/domains}}}}}{no} {yes}{no}}
control = submission/domain=
deny message = rejected because $sender_host_address is in a black list at $dnslist_domain\\n$dnslist_text
dnslists = ${readfile {/etc/exim4/dnsblists}{:}}
require message = relay not permitted
domains = +local_domains : +relay_to_domains
require verify = recipient
.ifdef POSTGREY_SOCKET
defer log_message = greylisted host $sender_host_address
set acl_m0 = request=smtpd_access_policy\nprotocol_state=RCPT\nprotocol_name=${uc:$received_protocol}\nhelo_name=$sender_helo_name\nclient_address=$sender_host_address\nclient_name=$sender_host_name\nsender=$sender_address\nrecipient=$local_part@$domain\ninstance=$sender_host_address/$sender_address/$local_part@$domain\n\n
set acl_m0 = ${sg{${readsocket{POSTGREY_SOCKET}{$acl_m0}{5s}{}{action=DUNNO}}}{action=}{}}
message = ${sg{$acl_m0}{^\\w+\\s*}{}}
condition = ${if eq{${uc:${substr{0}{5}{$acl_m0}}}}{DEFER}{true}{false}}
.endif
accept
acl_check_data:
accept
begin routers
dnslookup:
driver = dnslookup
domains = !+dummy_domains
transport = remote_smtp
ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
self = pass
no_more
disabled_domains:
driver = redirect
condition = ${extract{3}{:}{${lookup{$domain}lsearch{/etc/exim4/domains}}}}
allow_fail = yes
data = :fail: Domain disabled
no_more
disabled_users:
driver = redirect
condition = ${extract{5}{:}{${lookup{$local_part@$domain}lsearch{/etc/exim4/passwd}}}}
allow_fail = yes
data = :fail: User disabled
no_more
local_domains:
driver = redirect
data = ${quote_local_part:$local_part}@${extract{1}{:}{${lookup{$domain}lsearch{/etc/exim4/domains}}}}
cannot_route_message = Unknown user
no_more
.ifdef SA_ENABLE
spamcheck_router:
no_verify
condition = "${if and { {!def:h_X-Spam-Flag:} {!eq {$received_protocol}{spam-scanned}}} {1}{0}}"
driver = accept
transport = spamcheck
.endif
group_aliases:
driver = redirect
data = ${extract{1}{:}{${lookup{$local_part@$domain}lsearch{/etc/exim4/aliases}}}}
condition = ${if and{\
{exists{/etc/exim4/aliases}}\
{eq {${extract{2}{:}{${lookup{$local_part@$domain}lsearch{/etc/exim4/aliases}}}}} {group} }\
} {yes} {no} }
redirect_router = a_dnslookup
aliases:
driver = redirect
data = ${extract{1}{:}{${lookup{$local_part@$domain}lsearch{/etc/exim4/aliases}}}}
condition = ${if exists{/etc/exim4/aliases} {yes} {no} }
aliases_pipe:
driver = accept
transport = aliases_pipe
condition = ${lookup {$local_part@$domain} lsearch {/etc/exim4/pipe-aliases} {yes} {no} }
local_users:
driver = redirect
condition = ${lookup {$local_part@$domain} lsearch {/etc/exim4/passwd} {yes} {no} }
data = $local_part@$domain
redirect_router = autoreplay
.ifdef MAILMAN_ENABLE
mailman:
driver = accept
require_files = MAILMAN_HOME/lists/$local_part/config.pck
local_part_suffix_optional
local_part_suffix = -bounces : -bounces+* : -confirm+* : -join : -leave : -owner : -request : -admin : -subscribe : -unsubscribe
transport = mailman
mailman_isp:
driver = accept
require_files = MAILMAN_HOME/lists/$local_part-$domain/config.pck
local_part_suffix_optional
local_part_suffix = -bounces : -bounces+* : -confirm+* : -join : -leave : -owner : -request : -admin : -subscribe : -unsubscribe
transport = mailman_isp
.endif
catchall_for_domains:
driver = redirect
headers_add = X-redirected: yes
data = ${extract{2}{:}{${lookup{$domain}lsearch{/etc/exim4/domains}}}}
file_transport = local_delivery
unknown_users:
driver = redirect
allow_fail = yes
data = :fail: Unknown user
no_more
autoreplay:
driver = accept
condition = ${if exists{${extract{4}{:}{${lookup{$local_part@$domain}lsearch{/etc/exim4/passwd}}}}/message.txt} {yes} {no}}
retry_use_local_part
transport = address_reply
unseen
localuser:
driver = accept
transport = local_delivery
# Same routers without autoreplay
a_dnslookup:
driver = dnslookup
domains = !+dummy_domains
transport = remote_smtp
ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
self = pass
no_more
a_disabled_domains:
driver = redirect
condition = ${extract{3}{:}{${lookup{$domain}lsearch{/etc/exim4/domains}}}}
allow_fail = yes
data = :fail: Domain disabled
no_more
a_disabled_users:
driver = redirect
condition = ${extract{5}{:}{${lookup{$local_part@$domain}lsearch{/etc/exim4/passwd}}}}
allow_fail = yes
data = :fail: User disabled
no_more
a_local_domains:
driver = redirect
data = ${quote_local_part:$local_part}@${extract{1}{:}{${lookup{$domain}lsearch{/etc/exim4/domains}}}}
cannot_route_message = Unknown user
redirect_router = a_dnslookup
no_more
a_aliases:
driver = redirect
data = ${extract{1}{:}{${lookup{$local_part@$domain}lsearch{/etc/exim4/aliases}}}}
condition = ${if exists{/etc/exim4/aliases} {yes} {no} }
redirect_router = a_dnslookup
a_aliases_pipe:
driver = accept
transport = aliases_pipe
condition = ${lookup {$local_part@$domain} lsearch {/etc/exim4/pipe-aliases} {yes} {no} }
a_local_users:
driver = accept
transport = local_delivery
condition = ${lookup {$local_part@$domain} lsearch {/etc/exim4/passwd} {yes} {no} }
.ifdef MAILMAN_ENABLE
a_mailman:
driver = accept
require_files = MAILMAN_HOME/lists/$local_part/config.pck
local_part_suffix_optional
local_part_suffix = -bounces : -bounces+* : -confirm+* : -join : -leave : -owner : -request : -admin : -subscribe : -unsubscribe
transport = mailman
a_mailman_isp:
driver = accept
require_files = MAILMAN_HOME/lists/$local_part-$domain/config.pck
local_part_suffix_optional
local_part_suffix = -bounces : -bounces+* : -confirm+* : -join : -leave : -owner : -request : -admin : -subscribe : -unsubscribe
transport = mailman_isp
.endif
a_catchall_for_domains:
driver = redirect
headers_add = X-redirected: yes
data = ${extract{2}{:}{${lookup{$domain}lsearch{/etc/exim4/domains}}}}
file_transport = local_delivery
redirect_router = a_dnslookup
begin transports
remote_smtp:
driver = smtp
local_delivery:
driver = appendfile
file = ${extract{4}{:}{${lookup{$local_part@$domain}lsearch{/etc/exim4/passwd}}}}/mbox
delivery_date_add
envelope_to_add
return_path_add
mode = 0660
quota = ${extract{3}{:}{${lookup{$local_part@$domain}lsearch{/etc/exim4/passwd}}}}M
quota_warn_threshold = 75%
use_lockfile = no
no_mode_fail_narrower
user = ${extract{1}{:}{${lookup{$local_part@$domain}lsearch{/etc/exim4/passwd}}}}
group = ${extract{2}{:}{${lookup{$local_part@$domain}lsearch{/etc/exim4/passwd}}}}
address_pipe:
driver = pipe
return_output
aliases_pipe:
driver = pipe
command = ${extract{1}{:}{${lookup{$local_part@$domain}lsearch{/etc/exim4/pipe-aliases}}}}
use_shell
address_reply:
driver = autoreply
headers = ${readfile{${extract{4}{:}{${lookup{$local_part@$domain}lsearch{/etc/exim4/passwd}}}}/message.txt}}
to = $sender_address
.ifdef MAILMAN_ENABLE
mailman_isp:
driver = pipe
command = MAILMAN_WRAP '${if def:local_part_suffix {${sg{$local_part_suffix}{-(\\w+)(\\+.*)?}{\$1}}} {post}}' $local_part-$domain
current_directory = MAILMAN_HOME
home_directory = MAILMAN_HOME
user = MAILMAN_USER
group = MAILMAN_GROUP
mailman:
driver = pipe
command = MAILMAN_WRAP '${if def:local_part_suffix {${sg{$local_part_suffix}{-(\\w+)(\\+.*)?}{\$1}}} {post}}' $local_part
current_directory = MAILMAN_HOME
home_directory = MAILMAN_HOME
user = MAILMAN_USER
group = MAILMAN_GROUP
.endif
.ifdef SA_ENABLE
spamcheck:
debug_print = "T: spamassassin_pipe for $local_part@$domain"
driver = pipe
command = /usr/sbin/exim4 -oMr spam-scanned -bS
use_bsmtp
transport_filter = /usr/bin/spamc
home_directory = "/tmp"
current_directory = "/tmp"
user = Debian-exim
group = Debian-exim
return_fail_output
message_prefix =
message_suffix =
.endif
begin retry
* * F,2h,15m; G,16h,1h,1.5; F,4d,6h
begin rewrite
.ifdef MAILMAN_ENABLE
\N^(.*<)?([^<]*)@([^>]*).*$\N "${if exists{MAILMAN_HOME/lists/${sg{$2}{-$3.*}{-$3}}/config.pck} {${sg{$0} {-$3} {}}} {$0} }" S
\N^(.*<)?([^<]*)@([^>]*).*$\N "${if exists{MAILMAN_HOME/lists/${sg{$2}{-$3.*}{-$3}}/config.pck} {${sg{$0} {-$3} {}}} {$0} }"
.endif
begin authenticators
cram:
driver = cram_md5
public_name = CRAM-MD5
server_secret = ${extract {6} {:} {${lookup{$1}lsearch{/etc/exim4/passwd}}}}
server_set_id = $1
plain:
driver = plaintext
public_name = PLAIN
server_prompts = :
server_condition = ${if and{{!eq{$3}{}} {eq {$3} {${extract {6} {:} {${lookup{$2}lsearch{/etc/exim4/passwd}}}}}}} {yes} {no} }
server_set_id = $2
login:
driver = plaintext
public_name = LOGIN
server_prompts = "Username:: : Password::"
server_condition = ${if and{{!eq{$2}{}} {eq {$2} {${extract {6} {:} {${lookup{$1}lsearch{/etc/exim4/passwd}}}}}}} {yes} {no} }
server_set_id = $1-
tema323
- Сообщения: 7
- ОС: debian5
Re: exim4
проверяю по команде telnet мой.домен 25 выдает ошибка соединения с SMTP 10061 т.е. получается что вроде как сервис не запущен или не работает
-
sim1
- Сообщения: 155
- ОС: GNU,BSD
-
tema323
- Сообщения: 7
- ОС: debian5
Re: exim4
подскажите в каком файле логи exim? просто их там много разных и с названием log или подобного не нашел
-
Frank
- Сообщения: 1059
- ОС: Ubuntu, Debian
Re: exim4
По-моему, вам будет проще запустить от рута dpkg-reconfigure exim4-config и правильно ответить на задаваемые вопросы.

-
tema323
- Сообщения: 7
- ОС: debian5
Re: exim4
нет не проще, dpkg-reconfigure exim4-config затрет все настройки, а мне этого не надо, там много почтовых доменов с настройками
-
Frank
- Сообщения: 1059
- ОС: Ubuntu, Debian
Re: exim4
По идее, ничего затирать не должно, изменения вносятся (если я ничего не путаю) в /etc/exim4/update-exim4.conf.conf который не является конфигом, а инклудится при сборке самого конфига из этого файла и /etc/exim4/exim4.conf.template или файлов из /etc/exim4/conf.d/ (в зависимостри от настройки dc_use_split_config).
Конечно, не помешает на всякий пожарный забэкапить конфиги на случай если я не прав
P.S. у меня интерфейсы прописаны через точку с запятой, а не через двоеточие. Впрочем, как надо писать говорится в dpkg-reconfigure exim4-config
Конечно, не помешает на всякий пожарный забэкапить конфиги на случай если я не прав
P.S. у меня интерфейсы прописаны через точку с запятой, а не через двоеточие. Впрочем, как надо писать говорится в dpkg-reconfigure exim4-config

-
tema323
- Сообщения: 7
- ОС: debian5
Re: exim4
Показать сможешь свой конфиг? я гляну, сравню тогда что с чем и попробую исправить, может что-нибудь получится
-
sim1
- Сообщения: 155
- ОС: GNU,BSD
Re: exim4
логи exima можно посмотреть в файле /var/log/maillog - если настроено через syslog и указан именно этот путь
либо в конфиг добавить строчку
либо запустить exim в режиме отладки вот так вот
тогда все будет сыпаться на терминал
либо в конфиг добавить строчку
Код: Выделить всё
log_file_path = /var/log/exim_logлибо запустить exim в режиме отладки вот так вот
Код: Выделить всё
exim -bd -d+allтогда все будет сыпаться на терминал
Разработка программ для *nix