EXIM, sendmail, postfix, Dovecot и прочие. Решение проблем связанных с работой электронной почты
Модератор: xM
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
arez1978
- ефрейтор
- Сообщения: 69
- Зарегистрирован: 2012-03-15 7:20:22
Непрочитанное сообщение
arez1978 » 2012-03-15 7:26:49
Здравствуйте!
Настраиваю по
статье и у меня произошла оказия, при отправке письма одним из пользователей на адрес другого пользователя домена получаю следующее сообщение в логах.
Код: Выделить всё
exim -bd -d+all > /var/log/exim-debug.log 2>&1
Код: Выделить всё
09:05:16 19442 Start search
09:05:16 19442 search ended by ldap_result yielding 115
09:05:16 19442 ldap_parse_result: -14
09:05:16 19442 ldap_parse_result yielded 0: Success
09:05:16 19442 LDAP search: no results
09:05:16 19442 lookup failed
09:05:16 19442 expanding: ${lookup ldap{user=CN=exim,CN=Users,DC=domen,DC=ru pass=PassMail256 ldap:///DC=domen,DC=ru?mail?sub?(&(objectClass=top)(objectClass=g
09:05:16 19442 result:
09:05:16 19442 Starting Perl interpreter
09:05:16 19442 failed to expand: ${perl{get_mail_lists}{${lookup ldap{user=CN=exim,CN=Users,DC=domen,DC=ru pass=PassMail256 ldap:///DC=domen,DC=ru?mail?sub?(&(
09:05:16 19442 error message: Undefined subroutine &main::get_mail_lists called.
09:05:16 19442
09:05:16 19442 virtual_aliases router: defer for semenovd@domen.ru
09:05:16 19442 message: failed to expand "${perl{get_mail_lists}{${lookup ldap{user=CN=exim,CN=Users,DC=domen,DC=ru pass=PassMail256 ldap:///DC=domen,DC=ru?m
09:05:16 19442
09:05:16 19442 ----------- end verify ------------
Часть кода обрезалась справа. Буду рад любому коментарию
arez1978
-
Хостинг HostFood.ru
-
Хостинг HostFood.ru
Тарифы на хостинг в России, от 12 рублей:
https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.:
https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах:
https://www.host-food.ru/domains/
-
arez1978
- ефрейтор
- Сообщения: 69
- Зарегистрирован: 2012-03-15 7:20:22
Непрочитанное сообщение
arez1978 » 2012-03-15 8:22:23
Дополнение:
Код: Выделить всё
uname -a
FreeBSD mx1.domen.ru 8.2-STABLE FreeBSD 8.2-STABLE #0: Thu Jan 12 07:48:52 YEKT 2012 root@mx1.domen.ru:/usr/obj/usr/src/sys/FREE amd64
PERL_VERSION=5.8.9
EXIM=4.77
arez1978
-
arez1978
- ефрейтор
- Сообщения: 69
- Зарегистрирован: 2012-03-15 7:20:22
Непрочитанное сообщение
arez1978 » 2012-03-15 9:49:07
Дополнение 2:
содержимое перлового скрипта
Код: Выделить всё
#!/usr/bin/perl
use strict;
use warnings;
use Net::LDAP;
my %ldap_connect=(
HOST=>"192.168.0.2",
PORT=>"389",
# Timeout search
TIMEOUT=>"120",
# База поиска
BASE_DN=>"CN=Users,DC=domain,DC=ru",
# Юзер для доступа к LDAP
BIND_DN=>"CN=exim,CN=Users,DC=domain,DC=ru",
# Пароль юзера
BIND_PASS=>"PassMail256",
# Версия LDAP
VERSION=>"3"
);
sub get_mail_lists {
my $address=shift;
my ($user_mail, $dn, $mesg, $entry, $mail_lists);
my (@array_of_ldap_search, @entries);
$mail_lists=" ";
# Подключение к хосту
my $ldap = Net::LDAP->new($ldap_connect{'HOST'}, version=>$ldap_connect{'VERSION'}, port=>$ldap_connect{'PORT'}, timeout=>$ldap_connect{'TIMEOUT'}) or die exit 0;
# Подключение к дереву
$mesg=$ldap->bind($ldap_connect{'BIND_DN'}, password => $ldap_connect{'BIND_PASS'}) or die exit 0;
# Поиск e-mail дя группы
$mesg = $ldap->search(
base => $ldap_connect{'BASE_DN'},
scope => 'sub',
filter => "(&(objectClass=top)(objectClass=group)(mail=$address))",
attrs => ['member']
);
# Получение записей dn участников группы
foreach $entry ($mesg->entries) {
@array_of_ldap_search = $entry->get_value("member");
}
# Поиск в соответствии с dn почтового адреса
foreach $dn (@array_of_ldap_search) {
$mesg = $ldap->search(
filter=>"(&(objectClass=top)(objectClass=user)(objectClass=person)(distinguishedName=$dn))",
base=>$ldap_connect{'BASE_DN'},
scope =>'sub',
attrs=>['mail']
);
# Получение найденных записей e-mail'ов
# И формирование списка
@entries = $mesg->entries;
foreach $entry (@entries) {
$user_mail = $entry->get_value("mail");
if ( defined $user_mail ) {
if ( ! defined $mail_lists ) {
$mail_lists = ",".$user_mail;
}
else {
$mail_lists = $mail_lists.",".$user_mail;
}
}
# $mail_lists = $mail_lists.",".$user_mail;
}
}
$mail_lists = substr($mail_lists,1);
$ldap->unbind;
return $mail_lists;
}
# Для теста раскоментируйте
#print get_mail_lists('adm@domain.ru')
#
arez1978
-
arez1978
- ефрейтор
- Сообщения: 69
- Зарегистрирован: 2012-03-15 7:20:22
Непрочитанное сообщение
arez1978 » 2012-03-15 12:23:06
Спасибо, разобрался. Проблема была в неправильном составлении списка в перл скрипте.
arez1978
-
Kobzar
- рядовой
- Сообщения: 31
- Зарегистрирован: 2011-05-30 8:38:07
Непрочитанное сообщение
Kobzar » 2013-03-02 12:57:37
Так а может укажете что было неправильным * а то схожая проблема ?
Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости
Kobzar