LINUX.ORG.RU

Сообщения shamus24

 

Он-лайн репликация на файловом уровне

Форум — Admin

Возможен ли сабж без использования кластерных технологий? Желательно двусторонний сабж. То есть когда изменения в файловой системе, внесенные на одном сервере автоматически вносятся на другом. Стратегия Copy-on-close вполне подходит, т.е. особо умные алгоритмы, разруливающие одновременные изменения в одном файле на разных серверах - не нужны, достаточно, если просто всюду растиражируется версия, сохраненная последней.

Пока из похожего нашел только DRBD. Но это, во-первых, не на файловом уровне, а на блочном, и во-вторых, как я понял, нормально только односторонняя репликация получается пока (на один сервер читаем-пишем, по мере возможности всё переносится на второй, который при нормальной работе первого просто стоит в сторонке, но если что, его можно смонтировать и запустить).

Ещё есть AFS. Но это уже целое дело, и доступ к файлам получается не вполне локальный, в отличие от предыдущего.

Под виндой нужную мне функциональность обеспечивает Distributed File System и File Replication Service. Но то под виндой. Говорят, самба может быть частью DFS-ресурса в виндовом домене, но это как-то некультурно, даже если заработает.

shamus24
()

Что-нибудь вменяемое для копирования данных с одного раздела на другой

Форум — Admin

Бодрый день!

Вчера на вечер запланировал перенос данных (винт освободить), но почему-то с этой процедурой случился облом.

Задача стояла такая: на большом томе (~3ТБ, LVM, ext3) записано около 200ГБ данных. Требуется слить всё 1:1 в другое место. Для этого был создан target раздел размером 400ГБ (если важно, то даже не раздел, а файл на другом сервере, отформатированный в ext3 и примонтированный через loop). Никаких виртуальных файлов (типа procfs) в исходном разделе нет, есть только файлы, hard- и sym-линки.

Первое что попробовал - «rsync -aH». Он запустил зачем-то два процесса rsync, и в течение минут 15-20 каждый из них съел по 3ГБ оперативки, после чего память кончилась, и начался пилёж свапа. Рассудив, что такими темпами мы, если и уедем куда-нибудь, то очень нескоро, обломал это дело и попробовал «dump | restore». Первые пол-часа елозил по диску dump, читая по 40 мегабайт в секунду. Куда он девал прочитанное - непонятно, ибо в оперативку бы явно не влезло, ну да ладно. Потом за работу принялся restore. Этот сожрал одно из четырёх процессорных ядер целиком, и за полтора часа интенсивной «работы» создал в target пару десятков каталогов и ни одного файла. Я понял, что в обозримом будущем результата тоже не будет, и вернул всё назал.

Вопрос: чем можно выполнить такое копирование, затратив на всю операцию не более 6-8 часов? Сеть гигабитная, на требуемый объем хватит с большим запасом, но только если копирующий софт будет не тупить, а хотя-бы худо-бедно переписывать данные.

shamus24
()

Не стартует ядро после добавления IDE-диска

Форум — Admin

Народ, а что это может быть? Есть машинка (сервер) под CentOS 5, на аппаратном RAID-контроллере. Понадобилось тут поставить в неё пару IDE-дисков для технологических целей. Использовать набортный JMicron не получается - шлейфы не достают, поэтому я воткнул в неё карту Promise Ultra 133 TX2. Диски контрллером увиделись, биосом тоже, загрузку в биосе вернул с райда (потому как съехала), но грузится только GRUB. Ядро он, похоже, находит и грузит нормально, но после этого - вис мертвый. Для интересу пробовал поиграться в параметром hdd(0,0) циферки разные подставлять, но оно всё правильно грузит и с правильного диска, т.е. виснет уже само ядро. Если оставить воткнутый в PCI контроллер, но диски к нему не подключать - система грузится нормально.

Ладно, думаю, попробую другой, благо у меня их тут куча. Promise Ultra 100 TX. Та же ерунда. Наконец, CMD-649. С этим загрузилось. Правда, пока не знаю, диски видны или нет (без сети всё никак не прочихается), но не зависло по крайней мере. Если увидит, то мне всё равно, так и оставлю, но ведь Ultra 133 TX2 даже в HCL присутствует вроде бы. Чего это оно не грузится с ним?

shamus24
()

Зашифровать том с данными

Форум — Admin

Ещё вопрос: можно ли зашифровать уже имеющийся том с файловой системой и данными без форматирования (не / и не /boot, т.е. система остается работоспособной в любой момент и без этого тома)? ОС - Centos 5.3 Кажется, это умеет truecrypt. Под Windows точно умеет, а под Linux я не пробовал. Но мне хотелось бы обойтись штатными средствами типа LUKS-а. Том сделан в отдельной Volume Group в LVM, если это важно.

shamus24
()

Postfix smtpd_client_restriction — как отфильтровать по IP?

Форум — Admin

Всем привет.

Написал скрипт для фильтрации сообщений, но хочу, чтобы он выполнялся для всех компьютеров, кроме одного. Сделал такую конфигурацию:

main.cf:

smtpd_client_restrictions = hash:/etc/postfix/smtpd.client

smtpd.client:

10.0.0.1 OK //этот адрес надо без фильтра

10.0 FILTER my_filter: // всё остальное в локальной сети

Ну и my_filter в master.cf соответственно описан, не буду приводить ибо не важно. Но выползла наружу следующая проблема: под первую строчку попадают не только 10.0.0.1, но и 10.0.0.10, 10.0.0.11..., 10.0.0.100..., 10.0.0.199 и фильтр не выполняется.

Вопрос: как написать такое правило, чтобы под него попадало только 10.0.0.1, но не другие адреса? Сменить IP с 10.0.0.1 на что-то не допускающее других вариантов не предлагать.

Альтернатива: мне подошел бы ещё один вариант решения моей задачи, но тоже не пойму как сделать. А именно: если бы мой my_filter вызывался бы для клиентов, прошедших SMTP-авторизацию (и не вызывался для не прошедших, естественно). Есть permit_sasl_authenticated, работает, дает отправлять наружу только авторизовавшимся, но не позволяет вызвать собственный фильтр для них.

shamus24
()

Опять dovecot: а где sieve?

Форум — Admin

Следуя указаниям с http://wiki.dovecot.org/PrebuiltBinaries

скачал rpm-ы dovecot-1.2.6-0.el5.x86_64.rpm и dovecot-sieve-1.1.6-9.el5.x86_64.rpm dovecot и dovecot-sieve с

http://atrpms.net/name/dovecot/ и http://atrpms.net/name/dovecot-sieve/

соответственно. Поставил (CentOS 5 x64). А оно мне ругается, что не может найти плагин «sieve». Посмотрел - действительно, файлика нету, зато есть cmusieve. Попробовал - работает, и действительно с удалением пакета dovecot-sieve этот файл пропадает. Но мне нужен dovecot sieve, а не CMU sieve!

Вопрос: какого лешего под именем dovecot-sieve лежит бинарник CMU sieve?

Вопрос 2: где взять бинарник dovecot-sieve под CentOS 5 x64? Не хочется компилировать самому - граблей много.

shamus24
()

postfix's sendmail глюк

Форум — Admin

Здравствуйте. Странная проблема с постфиксовским сендмейлом. К примеру, имеем в файле tempfile вот такое сформированное сообщение:

--- cut ---
Return-Path: <shamus@ads.local>
Received: from vortex (vortex.ads.local [10.0.0.7])
by bastion.ads.local (Postfix) with ESMTP id E458B618415
for <shamus@ads.local>; Thu, 3 Dec 2009 18:26:13 +0200 (EET)
Message-ID: <011f01ca7435$56e88c50$0700000a@ads.local>
From: «Shamus» <shamus@ads.local>
To: <shamus@ads.local>
Subject: 123123123
Date: Thu, 3 Dec 2009 18:26:17 +0200
MIME-Version: 1.0
Content-Type: text/plain;
format=flowed;
charset=«koi8-r»;
reply-type=original
Content-Transfer-Encoding: 7bit
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.2900.2180
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180

<<Hope this helps>>
--- cut ---

Выполняем команду: /usr/sbin/sendmail -i shamus@ads.local
И получаем в почтовом ящике вот такое вот чудо:
--- cut ---
Received: by bastion.ads.local (Postfix, from userid 0)
id AB701618416; Fri, 4 Dec 2009 11:05:03 +0200 (EET)
Received: from vortex (vortex.ads.local [10.0.0.7])
Message-Id: <20091204090503.AB701618416@bastion.ads.local>
Date: Fri, 4 Dec 2009 11:05:03 +0200 (EET)
From: root@bastion.ads.local (root)
To: undisclosed-recipients:;

by bastion.ads.local (Postfix) with ESMTP id E458B618415
for <shamus@ads.local>; Thu, 3 Dec 2009 18:26:13 +0200 (EET)
Message-ID: <011f01ca7435$56e88c50$0700000a@ads.local>
From: «Shamus» <shamus@ads.local>
To: <shamus@ads.local>
Subject: 123123123
Date: Thu, 3 Dec 2009 18:26:17 +0200
MIME-Version: 1.0
Content-Type: text/plain;
format=flowed;
charset=«koi8-r»;
reply-type=original
Content-Transfer-Encoding: 7bit
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.2900.2180
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180

<<Hope this helps>>
--- cut ---

Вопрос: что оно делает с заголовками и на кой ляд?
/usr/sbin/sendmail указывает через две символьные ссылки на /usr/sbin/sendmail.postfix, т.е. в этой стороны косяков, вроде бы, нет.
Postfix версия 2.3.3-2.1, ОС - CentOS 5 x64
И главный вопрос: как победить? Как отправить письмо из скрипта, и чтоб оно дошло в нормальном виде?

shamus24
()

Sieve: можно ли создать такое правило?

Форум — Admin

Представим, что у нас есть два ящика bill@domain.com и joe@domain.com и два алиаса info@domain.com и sales@domain.com. Оба алиаса указывают на оба ящика, т.е. info: bill, joe; sales: bill, joe. Нужно, чтобы почта, отправленная на sales@domain.com попадала в папку sales обоих пользователей, и, соответственно, info@domain.com - в Info обоих пользователей. При этом в заголовках письма в «To:» может быть написано что угодно, хоть «undisclosed-recipient». Первое решение: дописывать при получении в заголовок (например X-Envelope-To:) получателя из конверта, а потом в sieve-скрипте проверять значение этого заголовка. Работать, наверное, будет, но люди говорят, что этим будут вскрываться все BCC письма, что не есть хорошо. Есть ли другие решения? Например, можно сохранить TO: из конверта в отдельный файл, но как его потом проверить из скрипта Sieve?

Второй вопрос аналогичный. Хочется иметь возможность проверить имя пользователя, которое использовалось в SMTP AUTH при его доставке на сервер. Решение может быть аналогичным, и с тем же недостатком: записать имя в какой-нибудь заголовок (например в X-Auth-Sender) и в скрипте его проверять.

Если никто ничего не предложит, придется так и сделать. Тогда подскажите, как красиво и эффективно задать поле заголовка e-mail сообщение? Т.е. переписать значение, если такой заголовок уже есть, или добавить, если нету. При условии, что сообщение ползёт из stdin. Может есть какой-нибудь скрипт готовый?

shamus24
()

Удаленное выполнение команд - какие есть варианты?

Форум — Admin

Это опять я :-)

На одной машине (Windows) крутится некая программа, которой нужно выполнять команды на другой машине (Linux). Какие есть варианты для этого? Сразу попробовал rexec и rsh, но этих зверей так и не удалось заставить передать команде данные через stdin, похоже это невозможно.

Сейчас зацепил через xinetd обыкновенный bash. Работает, и stdin понимает, но как-то нестабильно всё, не могу даже понять в чем дело. Раз отрабатывает команду, другой раз - нет, причем даже в одной и той же сессии. Ещё покопаю, но продумываю на всякий случай и другие варианты.

Подцепиться через обычный telnet или ssh? Не думаю, что будет отличаться от предыдущего варианта. А что ещё можно? Задача будет хоть и длительная, но одноразовая, и о безопасности во время её выполнения можно не заботиться (ведь голый bash через inetd - дыра та ещё), а как выполнится - и вовсе закрыть. Главное - как можно проще.

shamus24
()

Dovecot - Что за кодировка в именах папок?

Форум — Development

Здравствуйте все.

Есть IMAP-сервер Dovecot с хранилищем в формате Maildir.

Захожу на него почтовым клиентом (Outlook Express) и создаю папку с русским именем "Папка". В результате в файловой системе создается папка со странным именем : ".&BB8EMAQ,BDoEMA-". Точка в начале имени - это по стандарту Maildir добавляется к имени папки, а всё остальное - это и есть слово "Папка". Вопрос - кто-нибудь может опознать что это за кодировка и как в неё преобразовать произвольную строку символов? Есть пример кода? Исходная кодировка - Win1251 или UTF-8 (лучше Win1251).

Вот ещё пример: Папка "АБВ1где" кодируется как ".&BBAEEQQS-1&BDMENAQ1-", т.е. символы латинницы передаются без изменений.

Если просто создать папку с русским именем в UTF-8, Dovecot её вообще не видит, а мне надо автоматически создавать папки, чтобы их потом Dovecot мог отобразить. Интересно, что папку с указанным выше именем напрочь игнорирует самба, но это, думаю, из-за запрещенного в smb символа "&".

shamus24
()

Не могу подключиться к CentOS VNC server из-под винды

Форум — Admin

Здрасьте.

Поставил тут сервер под CentOS5, хочу убрать его с глаз долой, чтоб не жужжал под ухом, а потом уж настраивать. Админить предполагалось из-под винды, поэтому решил настроить открыть для этих целей SSH и VNC, тем более, что VNC давно и успешно для других целей используется, а сервер был установлен в режиме "сервер с иксами". А не тут-то было. Простое включение Remote desktop, как описано здесь

http://www.centos.org/docs/4/html/rhd-dg-en-4/ch-ddg-remote-desktop.html

не дало вообще никаких результатов. Никакой сервер не стартует и никакого доступа не предоставляет, вообще не пойму, что оно делает. Сделал как написано здесь:

http://wiki.centos.org/HowTos/VNC-Server

Всё с точность до буквы, даже имена пользователей сделал такие же. Работает. Но только не из-под винды. У меня под виндой в виртуальной машине живет ещё один CentOS, так вот vncviewer, запущенный оттуда, к серверу коннектится, и всё показывает, а запущенный непосредственно из-под винды (TightVNC и UltraVNC) - коннектится, спрашивает пароль, но кроме надписи "Initial Screen is loading" (или как-то приблизительно так - нету под рукой точно посмотреть) ничего не показывает. Иногда умудряется показать кусочек где-то 16х16 пикселей в левом верхнем углу, но это - всё. Интересно, что к CentOS-у в виртуалке с точно такими же настройками VNC коннектится и показывает замечательно, а вот к настоящему железному - затык. Что может быть? IPTables выключен. Конфиги не привожу, ибо они один-в-один с сайта по второй ссылке. В клиенте пробовал разные параметры - тип компрессии и прочее - ничего не меняется. Это первое.

А второе: так, как оно работает, может оно и не сильно плохо, но всё-таки не совсем то, что хотелось. Оно запускает свою сессию со своим менеджером и оболочкой, и с заданными наперед (в /etc/sysconfig/vncservers) именами пользователей. А изначально хотелось получить доступ к той сессии, которая в консоли. С экраном ввода имени пользователя и пароля, если там ещё никто не зашел. Такое возможно или нет? Ставить Х-сервер не предлагать - винда-с.

shamus24
()

Хитрый Virtual box

Форум — Desktop

А позволяет ли какая-нибудь виртуальная машина использовать гостевую ОС "для одного приложения" (образно)? Расшифрую. Запустив виртуальную машину, я не хочу видеть её десктоп, он не нужен (биос и процесс загрузки ОС - хз, как будет, так и будет, неважно). Нужно одно-единственное приложение, которое, разумеется, тоже запускается в автостарте гостевой ОС, или, ещё лучше - прям в параметрах запуска виртуальной машины. Но чтобы это приложение вело себя в хосте "как настоящее", т.е. чтобы его можно было ресайзить, двигать. Если в нем открываются дополнительные окна - чтобы они были независимыми от основного, и ни гостевой десктоп, ни окно самой виртуальной машины за этим всем не проглядывали.

Зачем - да просто для запуска одной-двух виндовых программ, но чтобы они как можно меньше отличались от нативных хостовых приложений. Нечто подобное видел когда-то на видеоролике, но там речь шла не о виртуальной машине, а об удаленном терминале, т.е. программы были запущены на сервере и вели себя "как родные". Но я то-ли не понял под чем это было, то-ли это экспериментальная фича была и в продакшен не пошла - короче говоря, в реале пощупать этого мне не удалось.

shamus24
()

Подружить Dovecot и LDAP (Windows Active Directory)

Форум — Admin

Выручайте, народ. Целый день бьюсь сегодня и ещё на прошлой неделе немного - безрезультатно.

Имеется: Dovecot 1.2.5 на OpenSUSE 11.1 с одной стороны и Active Directory на Windows 2003 server SP2 с другой стороны. Хочется, чтобы Dovecot пускал пользователей, проверяя их наличие и пароли в домене Active Directory. На данный момент не так важно как именно - через PAM/Kerberos или через LDAP, но ни то, ни то не работает. При авторизации через LDAP ошибка "ldap_bind() failed: Other (e.g., implementation specific) error", а при авторизации через pam -- "pam_authenticate() failed: Permission denied". При этом тестирование kinit-ом вполне проходит, имя пользователя и пароль проверяются, если неправильный пароль -- ругается. Перерыл пол-интернета, видел вопросы с похожими проблемами, но без ответов по сути, к сожалению. LDAP работает как userdb (например, можно указать userdb ldap и passdb sql), но не как passdb. При попытке подключить его как passdb (т.е. если в конфигах ниже раскомментировать секцию passdb ldap и закомментировать остальные passdb) пользователя не пускает и в log/mail пишет следующее:

Oct 5 11:24:42 suse11 dovecot: auth(default): new auth connection: pid=24011

Oct 5 11:24:43 suse11 dovecot: auth(default): client out: FAIL 1 user=user1

Oct 5 11:24:53 suse11 dovecot: auth(default): client in: AUTH 2 PLAIN service=imap lip=10.0.0.180 rip=10.0.0.7 lport=143 rport=3125 resp =AGRlbWlkAMzz6uj05fj8

Oct 5 11:24:53 suse11 dovecot: auth(default): ldap(user1,10.0.0.7): ldap_bind() failed: Other (e.g., implementation specific) error

Oct 5 11:24:55 suse11 dovecot: auth(default): client out: FAIL 2 user=user1 temp

Oct 5 11:25:08 suse11 dovecot: imap-login: Disconnected (auth failed, 2 attempts): user=<user1>, method=PLAIN, rip=10.0.0.7, lip=10.0.0.180

Если же использовать passdb pam (и userdb static к примеру), то имеем это:

Oct 5 15:07:59 suse11 dovecot: auth-worker(default): pam(user1,10.0.0.7): lookup service=dovecot

Oct 5 15:07:59 suse11 dovecot: auth-worker(default): pam(user1,10.0.0.7): #1/1 style=1 msg=Password:

Oct 5 15:07:59 suse11 dovecot: auth-worker(default): pam(user1,10.0.0.7): pam_authenticate() failed: Permission denied

Oct 5 15:08:00 suse11 dovecot: auth(default): new auth connection: pid=27686

Oct 5 15:08:01 suse11 dovecot: auth(default): client out: FAIL 1 user=user1

Oct 5 15:08:06 suse11 dovecot: imap-login: Disconnected (auth failed, 1 attempts): user=<user1>, method=PLAIN, rip=10.0.0.7, lip=10.0.0.180

Имеется:

dovecot.conf:

base_dir = /var/run/dovecot/

protocols = imap imaps managesieve

disable_plaintext_auth = no

ssl = no

login_dir = /var/run/dovecot/login

mail_location = maildir:/home/mail/%u:INDEX=/home/mailindexes/%u

maildir_copy_with_hardlinks = yes

protocol imap {

mail_plugin_dir = /usr/lib/dovecot/modules/imap

}

protocol pop3 {

mail_plugin_dir = /usr/lib/dovecot/modules/pop3

}

protocol lda {

postmaster_address = postmaster@example.com

mail_plugins = sieve

mail_plugin_dir = /usr/local/lib/dovecot/lda

auth_socket_path = /var/run/dovecot/auth-master

}

auth_executable = /usr/local/libexec/dovecot/dovecot-auth

auth_verbose = yes

auth_debug = yes

auth_debug_passwords = yes

auth default {

mechanisms = login plain

# Это PAM, который не работает

# passdb pam {

# args = dovecot

# }

# Это LDAP, который работает

# passdb ldap {

# Path for LDAP configuration file, see doc/dovecot-ldap-example.conf

# args = /usr/local/etc/dovecot-ldap-pass.conf

# }

# Это Statiс, который тоже работает, если работает passdb, конечно

#userdb static {

# args = uid=1005 gid=1010 home=/home/mail/%u

#}

# Это LDAP, который НЕ работает

# userdb ldap {

# Path for LDAP configuration file, see doc/dovecot-ldap-example.conf

# args = /usr/local/etc/dovecot-ldap.conf

# }

user = root

socket listen {

master {

path = /var/run/dovecot/auth-master

mode = 0666

}

client {

path = /var/run/dovecot/auth-client

mode = 0666

}

}

}

dict { }

plugin {

sieve = /home/mail/sieve/main/%u.sieve

sieve_dir = /home/mail/sieve/personal/%u

sieve_global_path = /home/mail/sieve/default.sieve

sieve_global_dir = /home/mail/sieve/global

}

protocol managesieve {

managesieve_implementation_string = dovecot

}

---- end of dovecot.conf

dovecot-ldap.conf:

hosts = windows-server

dn = CN=dovecot,CN=Users,DC=domain,DC=local

dnpass = *****

auth_bind = yes

auth_bind_userdn = CN=%u,CN=Users,DC=domain,DC=local

ldap_version = 3

base = CN=Users,DC=domain,DC=local

user_attrs = =mail=/home/mail/%u,=uid=1005,=gid=1010

user_filter = (&(objectCategory=user)(sAMAccountName=%u))

pass_attrs = sAMAccountName=user

pass_filter = (&(objectCategory=user)(sAMAccountName=%u))

---- end of dovecot-ldap.conf

/etc/pam.d/dovecot:

#%PAM-1.0

auth sufficient pam_krb5.so

account sufficient pam_permit.so

---- end of /etc/pam.d/dovecot

--- krb5.conf

[libdefaults]

default_realm = DOMAIN.LOCAL

clockskew = 300

[realms]

DOMAIN.LOCAL = {

default_domain = domain.local

kdc = 10.0.0.3 <-- IP-адрес, потому что с <name>.local какие-то проблемы здесь

admin_server = windowsserver.domain.local

}

[logging]

kdc = FILE:/var/log/krb5/krb5kdc.log

admin_server = FILE:/var/log/krb5/kadmind.log

default = SYSLOG:NOTICE:DAEMON

[domain_realm]

.domain.local = DOMAIN.LOCAL

[appdefaults]

pam = {

ticket_lifetime = 1d

renew_lifetime = 1d

forwardable = true

proxiable = false

minimum_uid = 1

external = sshd

use_shmem = sshd

clockskew = 300

}

--- end of krb5.conf

shamus24
()

ManageSieve с человеческим лицом

Форум — Admin

Здравствуйте, господа.

А существует ли сабж? Под человеческим лицом я понимаю клиента, который позволил бы пользователям, лениво тыкая мышкой, создавать и модифицировать правила, без использования скриптового языка. Типа: от этого пользователя - в эту папку, а для этого адреса - в эту. Как в Outlook Express, короче говоря. А если это будет ещё и IMAP-клиент, который будет знать, какие папки у пользователя есть, и подставлять для выбора - вообще здорово. Понимаю, всех возможностей скриптового языка таким образом не реализовать, но хотя бы базовые вещи. А то попробовал несколько клиентов, типа "с поддержкой managesieve", в том числе и плагин к мозилле, так они всего-то и умеют, что стянуть текст скрипта с сервера, показать его в текстовом виде пользователю для редактирования, и залить обратно, но редактировать скрипт всё равно предлагается пользователю руками в текстовом виде. Это немного не оно.

shamus24
()

Postfix. Как он передает параметры в LDA (mailbox_command)?

Форум — Admin

Очередной привет.
Помогите, а то голова кругом.
Есть postfix и dovecot. Postix настроен принимать локально почту на $mydomain, соответственно, для ее растасовки по ящикам postfix вызывает команду, написанную в параметре mailbox_command. С давкотом это должен быть давкотовский deliver:

main.cf:
mydestination = $myhostname, localhost.$mydomain, $mydomain
mailbox_command = /usr/lib/dovecot/deliver

Это работает. Более того, если я хочу сделать свой скрипт доставки, я это тоже могу сделать, например:

main.cf:
mailbox_command = /usr/local/lib/me/mydeliver

mydeliver:
#!/bin/sh
echo $ORIGINAL_RECIPIENT >>/home/me/mylog
/usr/lib/dovecot/deliver

Эхо тут в качестве примера, смысл в том, что скрипт что-то делает, а потом вызывает deliver. Это тоже работает. Потом мне локальной доставки показалось мало, и я начал мудрить с виртуальной. Сделал как в давкотовской вики, т.е.

main.cf:
mydestination = $myhostname, localhost.$myhostname
virtual_mailbox_domains = $mydomain
virtual_transport = dovecot

master.cf:
dovecot unix - n n - - pipe
flags=q user=vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}

После чего deliver начал валиться в кору (segmentation fault). Для выяснения что с ним, собственно, случилось, я хотел вызвать его сам из своего скрипта, снабдив нужными переменными. К примеру так:

testdeliver:
#!/bin/sh
export CLIENT_ADDRESS=127.0.0.1
export CLIENT_HELO=mycomp
export RECIPIENT=user@domain.local
...
/usr/lib/dovecot/deliver </home/me/emailmessage

И получил большой жырный болт. Deliver все время говорит, что не указан параметр -d <recipient>. Но, во-первых, если ему этот параметр указать, он валится в кору. Но с корой более-менее понятно: я взял другую сборку и там он уже не падает, а по-человечески пишет, что не может подключиться к dovecot-auth, это уже ясно куда копать. А во-вторых, и это для меня сейчас наиболее интересно: postfix не передает никаких параметров, когда вызывает этот deliver. И, тем не менее, он отрабатывает нормально. Вопрос: КАК он его вызывает, или как передает параметры для этого? Я уже пробовал так: сделал mailbox_command=/usr/local/lib/me/vardeliver, в котором set >/home/me/delivervars, и абсолютно все переменные из получившегося файла экспортировал как написано выше перед вызовом /usr/lib/dovecot/deliver, и всё равно он упорно требует параметр -d. Что ж ему ещё, гаду, нужно?

shamus24
()

Хочу выбрать подходящий IMAP-сервер (dovecot?)

Форум — Admin

Здравствуйте, господа.

Не подскажете ли по следующему вопросу: хочу подобрать правильный IMAP-сервер под корпоративную почту организации. Только наш mailflow имеет несколько специфический вид, и требования тоже, соответственно, специфические. Попробую описать насколько возможно подробно, поэтому заранее извиняйте, если получится длинно.

Итак, первая и основная "хотелка": хочу чтобы IMAP-сервер хранил письма в файловой системе и делал как можно меньше предположений относительно того, как они туда попадают, модифицируются и удаляются оттуда. Т.е., грубо говоря, чтобы положить письмо в почтовый ящик пользователя мне нужно было бы просто скопировать файл с этим письмом в соответствующую папку, и удалить его - аналогично (ну и конечно, чтобы сам сервер это всё умел делать по IMAP-командам от клиентов). При этом, чтобы файл мог являться хард- или даже симлинком на другой файл, и IMAP-сервер этот факт бы нисколько не смущал. Фактически хотелось бы, чтобы IMAP-сервер представлял собой своего рода шлюз из файловой системы в IMAP, по возможности с минимумом оверхеда. Прочитав по теме, нашёл, что примерно такую схему хранения информации предполагает формат Maildir и его модификации. Но вот с точки зрения его реализаций у меня закрались сомнения такого рода: все серверы, поддерживающие этот формат (а я смотрел описания двух - курьер и dovecot, даже не знаю есть ли другие), не ограничиваются только файлами с письмами, а хранят ещё где-либо дополнительную служебную информацию. И если поместить файл или линк на него в нужный каталог - проблема не большая, то синхронизировать ещё и какие-то индексные файлы в соответствии с добавленным или удаленным письмом я вряд-ли сумею. А вот, к примеру, Dovecot LDA "takes mail from an MTA and delivers it to a user's mailbox, while keeping Dovecot index files up to date". Даже если Dovecot сам в состоянии обнаружить сторонние изменения файловой системы и перестроить свои индексы, не будет ли это слишком затратной операцией для того, чтобы строить на этом основной поток почты? Ответа на этот вопрос мне найти не удалось. Если кто имел плотный опыт общения с этими зверями, скажите, можно ли так делать, или это не наш метод?

На случай если кто-то не может взять в толк, зачем такое может понадобиться, опишу задачу целиком: имеется множество пользователей со своими индивидуальными учетными записями (логинами, виртуальными или нет - не так важно). Почтовых адресов у этих пользователей (в данной задаче) нет. Имеется также множество ролевых почтовых адресов, типа info@..., support@... и т.д. Почта, приходящая на эти адреса, попадает в систему и раскладывается всем пользователям в соотвтетсвии с установленными для них правилами. Отправленная пользователями - тоже. То есть раскладываются не просто в inbox, а по папкам этих пользователей. Естественно, может оказаться, что какое-то письмо конкретному пользователю вообще не попадает (нет соответствующего правила), но чаще получается так, что одно входящее письмо попадает не просто всем нескольким десяткам пользователей, но и ещё в пять-десять тематических папок у каждого из них. Поэтому мне очень хочется, чтобы почтовый сервер понимал линки, иначе легко получается сотня-две копий одного и того же письма. Shared mailboxes, которые умеет Dovecot, не решают проблему, потому что в случае их использования письмо, удаленное одним пользователем, удаляется у всех, а это недопустимо.

Сейчас такая система работает под оффтопиком, т.е. под Microsoft Exchange, но с увеличением количества сообщений эта система становится всё более неуправляемой. Кроме того, в его новых версиях уже не работают "линки", исключающие многократное дублирование одного и того же письма. В старых оно хоть и делалось через ж.пу, но реально работало. В принципе, гейт FS<->IMAP меня бы устроил и под виндой, даже больше, чем под юниксом (софт проще переделывать), но единственное подобие стандарта на это - Maildir - принципиально под виндой не жилец, а с "нестандартом" второй раз связываться не хочется.

Спасибо, что дочитали :-)

shamus24
()

Another Q: как сделать dhcpd.conf не в /etc ?

Форум — Admin

Опять здравствуйте.

Хочу запустить DHCP сервер, но так, чтобы его конфигурационный файл dhcpd.conf находился на флешке. Обычным способом - сделать /etc/dhcpd.conf симлинком - не вышло. Потому что при запуске эти файлы копируются в jailed environment, а потом туда делается chroot. Симлинк тоже копируется, и указывает туда же на флешку, а туда, как я понял, система после chroot-а уже не пускает. Кроме того, он копируется только один раз, а когда этот симлинк там уже есть, копирование обламывается, и запуск dhcpd тоже.

Идеальным вариантом было бы сделать тот же jailed environment, не в /var/lib, а в /mnt/ram (это у мине ramfs там, оно уже работает), но dhcpd.conf копировать не из /etc, а из другого места. Насколько идеологически правильно для этих целей подрихтовать /etc/init.d/dhcpd (или кто там за его старт отвечает)? Или такие проблемы решать надо как-то по-другому? Ещё вариант - запустить этот сервер без chroot-а, тогда и симлинк из /etc/dhcpd.conf будет работать, наверное. Но, опять же, как это сделать правильно?

shamus24
()

Newbie Q: почему не расшифровываются имена в DNS?

Форум — Admin

Народ, помогите, ничего понять не могу. Поставил Open SUSE 10.0 (надо именно такой по условиям). Кто знает, что этому зверю может не нравится в имени домена ads.local (дословно)? Ибо имена расшифровывать напрочь отказывается. В смысле, делаешь ping server.ads.local, а оно говорит - болт, неизвестный хост. DNS-сервер на другой машине под виндами. Есть ещё "однословный" домен ads, с ним никаких проблем - ping server.ads идет на ура, что особенно странно, учитывая, что server.ads есть CNAME на server.ads.local. Причем тот же ping об этом знает, и в ответ на ping server.ads говорит PING server.ads.local 56 bytes of data, и, соответственно, пингует. А непосредственно ping server.ads.local - болт. Другие службы (самба-клиент, например) тоже не видят имена из этого домена. А nslookup на этом же юниксе расшифровывает все имена без исключений. Под виндами, естественно, никаких проблем ни с какими именами, тем более, что на этом доменном имени Active Directory висит.

Думал, может это юникс свой "родной" домен (который в resolv.conf прописан словом DOMAIN) расшифровать не может почему-то, там было написано как раз ads.local, но я поменял его на ads, и картина не изменилась, т.е. server.ads расшифровывается, а server.ads.local - по-прежнему нет.

И ещё - может ли из-за этого самба-сервер не пускать клиентов? На виндовых машинах самба-сервер в сетевом окружении виден, но при попытке зайти - "The network path was not found". Пользователя через smbpasswd добавил и активировал. Самбу настраивал через yast, то есть порты в файрволле он должен был открыть.

shamus24
()

RSS подписка на новые темы