Все о реестре Regedit / All about registry

Установка Консоли управления компьютером Microsoft 3.0 для Windows XP

Консоль управления компьютером Microsoft (Microsoft Management Console, MMC) является интерфейсной оболочкой, которую можно заполнять различными инструментами (или интегрируемыми приложениями) для создания пользовательских консолей. Пользовательские консоли оказываются очень удобным средством для выполнения целого ряда задач, но сложный процесс создания таких консолей в MMC 2.0 для Windows XP кажется чересчур запутанным.

К счастью, разработчики Microsoft создали для Windows Vista новый интерфейс MMC, который совместим и с Windows XP. Интегрируемые приложения версии MMC 3.0 обладают расширенной функциональностью, а более удобный интерфейс значительно облегчает задачу создания и использования консолей.

Одна из главных особенностей MMC 3.0 для Windows XP – новый интерфейс, позволяющий добавлять и удалять интегрируемые приложения. Вместо утомительной процедуры версии 2.0, которая предусматривает работу с двумя разными диалоговыми окнами для создания пользовательской консоли, MMC 3.0 предлагает единое диалоговое окно, с помощью которого создавать консоли оказывается гораздо проще.

Загрузить и установить MMC 3.0 для Windows XP – легче легкого. Однако для того, чтобы активировать новый пользовательский интерфейс, придется добавить в реестр специальный ключ. Вот как это делается:

1...Скачайте Консоль управления компьютером Microsoft 3.0 (Microsoft Management Console 3.0) для Windows XP из Центра загрузки Microsoft (Microsoft Download Center).
2...Найдите и запустите исполняемый файл WindowsXP-KB907265-x86-ENU.exe, чтобы открыть мастер установки MMC 3.0.
3...После завершения установки откройте Редактор реестра (Registry Editor) (Regedit.exe).
4...Перейдите к ключу HKEY_LOCAL_MACHINE\ SOFTWARE\Microsoft\MMC.
5...Нажмите правой кнопкой мыши на подключе MMC и выберите пункт меню «Создать | Ключ» (New | Key).
6...Дайте новому ключу имя «UseNewUI» и нажмите [Enter].
7...Закройте Редактор реестра.

Теперь при запуске MMC.exe из диалогового окна «Выполнить» (Run) вы сможете воспользоваться новым интерфейсом для добавления и удаления интегрируемых приложений. Достаточно пролистать список приложений в левой панели MMC и нажать кнопку «Добавить» (Add), чтобы создать пользовательскую консоль в правой панели.

Обновлено 28.05.2010 12:29
 

Быстрый сбор MAC-адресов в Windows XP при помощи команды ARP

Разрабатывая политику безопасности работы беспроводной сети Windows XP, помимо Wired Equivalent Privacy (WEP) или системы шифрования Wi-Fi Protected Access (WPA), вы можете воспользоваться технологией фильтрации адресов Media Access Control (MAC).

C активированной функцией адресной фильтрации MAC, точка беспроводного доступа или беспроводной маршрутизатор перед подключением компьютера к сети проверит MAC-адрес запрашивающей доступ сетевой карты на наличие его в списке фильтров. Это значит, что сперва нужно будет узнать MAC-адрес каждого клиентского компьютера. Наверное, вы думаете, что для этого придётся вручную запустить команду Getmac на каждой машине.

Существует более простой путь. Для быстрого сбора всех MAC-адресов достаточно воспользоваться командой Address Resolution Protocol (ARP):

1...На одном компьютере запустите команду Ping для обмена пакетами со всеми машинами, которые будут подключены к точке беспроводного доступа или беспроводному маршрутизатору.
2...Введите команду ARP с параметром -a:

Arp -a

При запуске команды ARP с параметром –a на экране будет отображён кэш ARP, в котором хранятся IP- и MAC-адреса наиболее часто входящих в сеть компьютеров, или, как в данном случае, компьютеров, откликнувшихся на действие команды Ping.

Обновлено 28.05.2010 09:09
 

Создание мультизагрузочного CD на основе Bootable CD Wizard

Загрузочными дискетами (или CD с загрузочной областью) пользуются во многих случаях:

для изменения параметров (форматирования) уже используемого жесткого диска или при разметке вновь купленного;
для установки Операционной Системы;
при отказе в работе Операционной Системы (вплоть до отказа загружаться вообще);
при восстановлении Системы из образа (например, Norton Ghost);
для попытки восстановления "забытого" пароля Администратора;
а так же во многих других случаях.

Существует огромное количество готовых BootDisks - загрузочных дискет, да и многие программы (например, тот же PartitionMagic) имеют функцию формирования собственной загрузочной дискеты. В результате имеем кучу разнообразных загрузочных дискет (зачастую двойных для запуска одной программы) или уже готовых (купленных) загрузочных CD, причём не всегда точно помним, на котором именно и что именно запускается.

Меня интересовали два основных вопроса:
иметь несколько вариантов загрузки с одного CD;
иметь загрузочный образ размером больше, чем одна стандартная дискета 1440 Кб.

Возможность решить сразу оба этих вопроса собственными силами предоставляет менеджер загрузки с компакт-дисков Bootable CD Wizard. Это своеобразный "конструктор" загрузочного Меню, в котором и производится выбор варианта загрузки.


Что потребуется для работы

Естественно, сам "конструктор" BCDW, распространяющийся бесплатно. В настоящий момент в сети обычно упоминаются две версии BCDW - 1.50z и 2.0a1. На официальном сайте BCDW предлагается к загрузке только 1.50z. Версия 2.0а1 находится в состоянии альфа-релиза и официально не выкладывалась, однако доступна в сети. Поскольку функционально она превосходит 1.50z (в частности, поддерживает загрузку некоторых ISO образов и Windows XP SP2), то многие используют именно 2.0a1. Загрузить версию 2.0a1 можно по прямой ссылке с нашего сайта: в архиве 7-zip (84 kb) или в Zip (303 кб). В этой статье рассматриваются конфигурационные файлы BCDW 2.0a1, однако большинство задач можно было решить и при помощи версии 1.50z.

Справочное руководство для 1.50, по сути являющееся оффлайн версией сайта BCDW (формат CHM, 815 kb), в большинстве случаев применимо и к 2.01. Настоятельно рекомендуется загрузить его и изучить, т. к. там действительно есть ответы на очень многие вопросы. Официальных справочных материалов для 2.0a1 на данный момент нет.

Также пригодится утилита для работы с образами дисков. Например, WinImage (следует отметить, что эта программа не совсем бесплатная).
Состав аварийно-восстановительного диска

Есть много статей, описывающих работу с Bootable CD Wizard (например, Совмещение нескольких вариантов установки Windows XP на одном диске или Создание мультисистемного аварийного диска), но там, в основном, описывается мультизагрузка для установки различных операционных систем. Mеня же более интересовал CD в виде ReAnimator, на котором мне требовались:
минимальная быстрозагружаемая сборка на основе Window 98 (или 95, а то и DOS, как менее навороченного), чтобы только загрузиться, заглянуть на жёсткие диски, восстановить подпорченную загрузочную область, сделать Format, прогнать Sсandisk, перебросить (да хоть дистрибутив ОC) с CD-Rom на жесткий диск (например, вот такая 725 кб);
расширенный вариант Загрузочной дискеты, с поддержкой длинных русских наименований, возможность залезть в разделы NTFS, в архивы, прогнать диагностику жёсткому диску, тестировать Оперативную память или другие "железные" компоненты (соль-сахар по вкусу), и так далее;
загрузчик PartitionMagic (устанавливать для этих целей на винт полный пакет не вижу никакого смысла);
загрузчик Norton Ghost, для сохранения либо обратного восстановления убитой (насмерть) Системы.
загрузчик Memtest, для жесткого и обстоятельного тестирования оперативной памяти (RAM)

Далее будем рассматривать, как я использовал Bootable CD Wizard для реализации именно и только указанных свойств. Разобравшись с общими принципами работы с BCDW, вы без труда сможете добавить варианты загрузки своих любимых утилит, расширив функциональность диска.
Настройка меню вариантов загрузок

Пакет Bootable CD Wizard предоставляет широчайшие возможности для создания меню мультизагрузки, но мы в основном будем крушить "лишние" на данный момент функции универсального загрузчика (ломать - не строить, голова не болит).
Первым делом создадим где-нибудь в укромном уголке своего жёсткого диска папку с гордым названием (у меня она называется "A вот это всё и нужно записать"). В неё копируем из пакета Bootable CD Wizard следующие папки и файлы:

initest.bat - тест оболочки, с помощью которого можно проверить, как будет выглядеть интерфейс Меню (если мы его будем изменять) без проверки собственно функциональности.

В папке bcdw2dos файлы для запуска теста оболочки, хотя bcdw.com может использоваться не только для этого.

cp1251r.cpf и russian.fnt - файлы Шрифта и Кодировки русского языка (для Меню), все остальные файлы в обеих папках - на данный момент лишние.

bcdw.ini - конфигурационный файл BCDW.

Файлы *.bin - сами загрузчики.

BOOTFIX.BIN нужен, если вы хотите при загрузке иметь опцию "Press any key to boot from CD..."; и не нужен, если хотите сразу загружаться в BCDW).

На одном уровне с папкой [BCDW] есть папка [IMG]. Сюда мы будем складывать все свои загрузочные образы, которые будут запускаться по выбору из стартового Меню. На скриншоте образы уже есть в папке, а о том, как их создавать, рассказывается ниже.


Теперь начнём кройку и шитьё.

Открываем в Блокноте файл bcdw.ini, cмотрим выпученными глазами на его содержимое, затем удаляем ВСЁ, заменяя на текст (например у меня осталось):
[InitOptions]

Font= \BCDW\FONTS\russian.fnt
CharSet= \BCDW\CHARSETS\cp1251r.cpf

[MenuItems]

C:\; Загрузка с диска C:;^ Опа... Я не переключился в CMOS на загрузку с диска C:
A:\; Загрузка с FLOPPY;^ Ну нафиг, не с CD-Rom надо было, а с Флоппера
:Reboot; Перезагрузка;^ Перезагрузка компьютера
:
:; *** Загрузка DOS-программ с компакт-диска
:
\img\Quicker.IMA; Системная дискета DOS 7.10; ^ Быстрая загрузка без изысков^ Но тогда кое-чё из функций может и не работать.
\img\Win_98SE.IMA; Крутая загрузочная дискета Win 98SE; К обычной загрузочной дискете Win 98SE присобачены ещё:^ Volkov Commander с поддержкой длинных имен, NTFS Reader,^ Victoria v3.4, DIMM-Test, PTS DiskEditor, System Speed Test ...
\img\Part_Mag.IMA; PartitionMagic & BootMagic 8.0; Позволяет изменять, делить, объединять и конвертировать разделы^ (partitions) жесткого диска без потери записанной информации,^ возможна работа с FAT/FAT32/NTFS/Linux и OS2 дисками.
\img\No_Ghost.IMA; Norton Ghost 2003; Умеет сохранять и восстанавливать посекторно файлы жесткого диска,^ всех его байтов вплоть до загрузочных секторов,^ независимо от файловой системы.
\img\memtest.iso; Memtest ; ^ Незаменим для тщательного тестирования оперативной памяти (RAM)

[MenuOptions]

BGColors= 00, 80, 80, 80
BGSymbol= 32
MenuPosition= 02, 05, 76, 13
MenuColors= f9, 9f, 1f, f0, 0f, fd, f9
MenuBorderStyle= 5
MenuShadowStyle= 2
MenuTitle= * Варианты загрузки *
MenuDefault= 0
MenuTimerLabel= Если ничего не трогать - загрузка с винта запустится через:
MenuTimer= 10
HelpPosition= 02, 19, 76, 05
HelpColors= 70, 9f, 1f, 70, 0f, 70
HelpBorderStyle= 5
HelpShadowStyle= 2
HelpTitle= * Описание варианта *
AboutPosition= 02, 01, 76, 03
AboutColors= 70, 9f, 1f, 70, 0f, 70
AboutBorderStyle= 5
AboutShadowStyle= 2
AboutTitle= * Freeware Multiple-Image Bootable CD Manager *
AboutText= * Аварийный мультизагрузочный диск *
ScrollPosition= 21, 00, 43, 01
ScrollColors= 87, 87, 87, 87, 0f, 87
ScrollMode= 0
ScrollText= ну давай уже хватит думать нажми хоть на что-нибудь

Запускаем initest.bat и смотрим, что получилось. Что-то вроде такого:


Увеличить

При данных настройках файла bcdw.ini на выбор предлагается пять вариантов загрузки с CD, загрузка с Флоппера или продолжение обычной загрузки в обход Меню, с жесткого диска, причём если не трогать клавиатуру - последний вариант происходит автоматически через 10 секунд.

Все текстовые данные можно менять произвольно. При желании подёргать за разные [Options] окна Меню (расположение, размеры, цвета фона и букв) - читайте описание файла bcdw.ini в Полном Руководстве (если удосужились его скачать) или на сайте. Вот варианты настроек от участников конференции OSZone:

Vovanchik

Увеличить



Fanzuga

Увеличить



_SV_

Увеличить

Секции [MenuOptions] каждого из вариантов собраны в один текстовый файл.
Создание загрузочных образов

Обычно используются загрузочные образы дискет (IMA) или дисков (ISO).
Образы загрузочных дискет (IMA)

Если готового образа нет, считаем, что у нас есть Загрузочная дискета и WinImage.

Вставляем в компьютер дискету, выбираем в WinImage диск A:, считываем дискету и сохраняем в образ (с расширением *.IMA). Описание с картинками опять же есть либо в Полном Руководстве, либо на сайте. Если этих дискет ДВЕ - образ делается из первой дискеты, затем формат образа меняется на 2880 Кб, и в окно образа переносятся все файлы (по замене совпадающих) со второй дискеты. В процессе желательно "немножко" откорректировать описание загрузки. К примеру для дискет из пакета PartitionMagic из файла AUTOEXEC.BAT можно совсем удалить строчки
ECHO.
ECHO Please Insert PartitionMagic Disk 2
ECHO.
ECHO.
ECHO *** Press Any Key to Continue ***
ECHO.
PAUSE >NUL

нам же теперь не потребуется ждать замены на вторую дискету.

Для создания образа произвольного размера мне показалось проще всего взять жёсткий диск (любой старый, того размера, который под руки попадётся), разметить его первый раздел как активный и задать размер 700 Мб (а куда больше-то?), правильным образом перенести на него системные файлы с загрузочной дискеты (Sys A: C:), скопировать туда с Загрузочной дискеты остальные файлы, а затем свалить туда же ВСЁ то, что хотелось бы видеть после загрузки: драйвера CD и мышки, DOS-тестовые программы, Вьювер NTFS-разделов, Norton Comander вместе со всеми архиваторами (ZIP, RAR, ARJ, LHA, ICE и прочей экзотики), да хоть и вообще DOS Navigator, общий размер-то нас волновать перестал. Теперь, подключив этот жёсткий диск, как основной, перезагрузить компьютер с него и произвести полную настройку приложений, вместе с Общими настройками и Меню NC (или другого файлового менеджера). Не мешало бы в файл AUTOEXEC.BAT вставить строчку
Set TEMP=C:\TEMP

иначе многие DOS-программы не будут запускаться с CD, так же они могут не работать, если все жёсткие диски, и даже сам диск C:, размечены как NTFS.

Затем грузимся в обычном режиме, прицепляя этот винт дополнительным к своему основному, берём тот же WinImage (нас теперь интересует его Профессиональный режим) и, указывая ему этот самый 700-Мб раздел, делаем образ всего раздела, сохраняя его как *.IMA. Размер получившегося образа - 700 Мб. Если WinImage указать "Oтceкaть нeиcпoльзуeмую чacть oбpaзa" - размер файла образа будет определяться только размером файлов, его составляющих (в моём случае - около 8 Мб), но в этот образ можно набить ещё файлов вплоть до его полного размера, 700 Мб. Не мешало бы провести операцию "Дефрагментировать текущий образ" - тогда его объём получится ещё меньше.
Образы загрузочных дисков (ISO)

Для загрузки с ISO нужен BCDW 2.0a1, но и он не абсолютно любой ISO образ может загрузить. Загрузочные образы можно найти в сети (например, memtest) или создать самому при помощи все того же WinImage (Disk - Create CD-ROM ISO Image). Таким способом, к примеру, можно создавать ISO образы загрузочных дисков Acronis True Image и Disk Director Suite.

Вообще, BCDW распознает образ не по расширению, а по содержимому. Так что вы можете переименовать расширения всех своих образов хоть в *.APO.
Как прописать загрузку образов в bcdw.ini

Осталось только сложить все свои получившиеся образы в папку [IMG] и сделать соответствующие изменения в секции [MenuItems] файла bcdw.ini, поместив туда названия своих вариантов загрузки и краткие описания этих вариантов. Вы, наверное, уже догадались как это делается, посмотрев код, приведенный выше. На всякий случай, поясняем формат:
; путь к образу; название; описание
; ^ - перевод строки
\img\Quicker.IMA ; Системная дискета DOS 7.10 ; ^ Быстрая загрузка без изысков
\img\memtest.iso ; Memtest ; ^ Незаменим для тщательного тестирования оперативной памяти (RAM)

Всё. Готовы записывать.
Запись загрузочного диска

Мы рассмотрим создание ISO образа утилитой CDImage, a также классический метод записи загрузочного диска при помощи таких программ, как Nero или Easy Media Creator. Рекомендуется вначале пару раз побаловаться с перезаписываемым CD-RW, чтоб не запускать с балкона в сторону горизонта испорченные одноразовые CD-R болванки.

Для начала, в корень Проекта Загрузочного диска помещаем папки [BCDW] и [IMG].
CDImage

Подробнее CDImage рассматривается в статье Создание загрузочного ISO/CD. В набор, который можно загрузить с нашего сайта, входит все необходимое для создания образа мультизагрузочного диска на основе BCDW (кроме BCDW, который вам надо загрузить отдельно). В набор входит файл Create_ISO_BCDW.cmd, запустив который вы и получите желаемый ISO образ. Давайте рассмотрим файл подробнее, открыв его в текстовом редакторе:
@echo off
TITLE Creating ISO Image of BCDW project
ECHO.

:: Укажите путь к дистрибутиву (файлам создаваемого диска)
SET DISTRO=C:\XPCD

:: Укажите где создать результирующий ISO образ
SET OUTPUT=C:

:: Укажите метку тома (без пробелов!)
:: Она же будет использована как имя ISO образа
SET LABEL=MULTIBOOT_BCDW
:: Список стандартных меток
:: Windows XP http://www.tacktech.com/display.cfm?ttid=342
:: Windows 2003 http://www.tacktech.com/display.cfm?ttid=355

:: Снятие атрибутов файлов
ECHO Removing any possible attributes set on %DISTRO% and its subfolders...
attrib -R -H "%DISTRO%" /S /D
ECHO.

:: Создание ISO
ECHO Creating ISO...

:: Предполагается, что папка с BCDW в корне создаваемого диска.
:: Измените путь к загрузчику (.bin) если необходимо.

:: Для BCDW 2.0a1
CDIMAGE.EXE -l"%LABEL%" -h -j1 -oci -m -b"%DISTRO%\bcdw\loader.bin" "%DISTRO%" "%OUTPUT%\%LABEL%.ISO"

:: Для BCDW 1.50z
:: CDIMAGE.EXE -l"%LABEL%" -h -j1 -oci -m -b"%DISTRO%\bcdw\bcdw.bin" "%DISTRO%" "%OUTPUT%\%LABEL%.ISO"
ECHO.

PAUSE
EXIT

Вам нужно указать, где находятся файлы проекта (по умолчанию - C:\XPCD) и куда вы хотите сохранить получившийся образ (по умолчанию - корневой каталог диска С). Вы также можете легко изменить метку тома на свою. Мы предполагаем, что папка [BCDW], содержащая загрузчик, находится в корне проекта. Если вы разместили папку в другом месте, то измените путь к загрузчику. Двойной клик на файле Create_ISO_BCDW.cmd начинает создание ISO образа. Это, пожалуй самый простой и надежный метод создания загрузочного диска.
Классический метод записи

В качестве загрузочного образа указываем файл loader.bin, он лежит у нас (чтоб не искать его каждый раз) в папке [BCDW]. (Примечание: речь идет о загрузчике 2.0a1; для 1.50z указывайте bcdw.bin). Не пугайтесь, он и правда всего ДВА КилоБайта. Файл initest.bat нам здесь не потребуются.

На оставшееся место до полного заполнения записываемого CD-R можно складывать уже всё, что угодно.

Здесь имеется один подводный камень: далеко не все программы записи на CD имеют необходимые настройки (к примеру Small CD-Writer для наших целей не подходит). В настройках записи ОБЯЗАТЕЛЬНО нужно указать параметры "Режим эмуляции"="Без эмуляции" и "Количество секторов для загрузки" = 4. Если этого не сделать - при стандартной записи на CD информации объёмом более 100 Мб загрузочный сектор такого рода работать отказывается. Правда, менее 100 Мб - работает, даже при записи через Small CD-Writer.
Для тех кто в танке

Настройки (с картинками) для программ Nero, CDRWin, WinOnCD, Easy CD Creator, Instant CD+DVD, CDImage или mkisofs имеются всё в том же Полном Руководстве или на сайте BCDW.
Практические советы

Если вы не устали, то нам еще есть что рассказать Вашему вниманию предлагается два примера, демонстрирующих применение BCDW в реальных условиях.
Упрощаем до упора

Если загрузочный образ всего один, то есть мультизагрузка не требуется (например, нужно создать загрузoчный образ всего жёсткого диска или только одного его раздела, если он конечно не больше объёма CD-R), то INI файлы BCDW практически вырождаются.
Содержимое файла bcdw.ini принимает вид
[MenuItems]
\img\No_Ghost.IMA


Сам подготовленный образ *.GHO всего жёсткого диска (или только одного его раздела) переносится прямо в корень образа загрузчика No_Ghost.IMA (здесь потребуется именно тот самый 700-Мб образ).

Записываем на CD-R папку [BCDW], в которой лежат два файла bcdw.ini и loader.bin (папки [charsets] и [fonts] здесь не потребуются), и папку [IMG], в которой лежит один-единственный файл No_Ghost.IMA . Используем в качестве загрузочного образа всё тот же файл loader.bin.

Загружаемся с CD-Rom. Никаких входных Меню выбора, загружается сразу Norton Ghost, и, Вы будете смеяться, но файл *.GHO (нехилого размера) лежит прямо на диске A:\. Можно конечно вообще избавиться от папок, но это уже, наверное, перебор...
Усложняем по максимуму

В данной статье для примера взят диск с пятью различными вариантами загрузки. Если не скромничать и продолжать добавлять варианты, то чтобы их все увидеть, придется долго прокручивать меню вниз. В такой ситуации неизбежно возникает вопрос о более удобной системе навигации по меню. Решить проблему можно, создав древовидную структуру меню.

Допустим, ваши варианты загрузки можно условно разделить на несколько категорий: Установка операционных систем, Тест стабильности компонентов, Создание и изменение разделов HDD и т.д. Тогда можно на первом экране отобразить эти категории. Пользователь, выбрав какую-либо категорию, будет переходить уже непосредственно к различным вариантам загрузки.

Например, выбрав Создание и изменение разделов HDD, мы попадаем в подменю, содержащее PartitionMagic и Acronis Disk Director.


Увеличить



Реализовать это даже проще, чем объяснить словами. Все что нужно сделать, это в [MenuItems] bcdw.ini указать путь к соответствующему INI файлу, определяющему содержимое меню. Формат этого INI файла абсолютно такой же, как у bcdw.ini. В описанном выше примере мы имеем примерно следующее (приводятся только секции [MenuItems], т.к. остальные будут одинаковыми, а описания вариантов загрузки взяты произвольно и могут не полностью соответствовать скриншоту).

bcdw.ini
[MenuItems]
\bcdw\OSInstal.ini ; Установка операционных систем ;^ Ваше описание.
\bcdw\Test.ini ; Тест стабильности компонентов ;^ Ваше описание.
\bcdw\PrtRstrk.ini ; Создание и изменение разделов HDD ;^ Ваше описание.

OSInstal.ini
[MenuItems]
:Return ; Возврат в предыдущее меню
\i386\setupldr.bin ; Windows XP Pro Regular; ^ Regular installation of Windows XP Professional.
\i386\setupld1.bin ; Windows XP Pro Unattended; ^ Unattended installation of Windows XP Professional.

Test.ini
[MenuItems]
:Return ; Возврат в предыдущее меню
\img\memtest.iso; Memtest ; ^ Незаменим для тщательного тестирования оперативной памяти (RAM)

PrtRstrk.ini
[MenuItems]
:Return ; Возврат в предыдущее меню
\img\Part_Mag.IMA ; PartitionMagic & BootMagic 8.0; Позволяет изменять, делить, объединять и конвертировать разделы.
\img\adds_10.iso ; Acronis Disk Director ;^ Тоже самое но уже на Linux, алгоритмы работы более оптимизированные.

Вложенность меню не ограничивается двумя уровнями. К любому меню можно прикрутить подменю. Главное - не увлекаться и не усложнять навигацию сильнее, чем это необходимо. Естественно, для каждого меню можно сделать собственную схему оформления.

Спасибо Vovanchik'у, предложившему включить в статью эту секцию и любезно предоставившему свои INI файлы для наглядности.




Обновлено 28.05.2010 12:25
 

Ошибка Microsoft Document Image Writer

Ошибка Microsoft Document Image Writer
При нажатии на меню файл программа выдаёт ошибку и закрывается
Решение:
Ошибка возникает из-за того что Microsoft Document Image Writer помнит несколько сохранённых файлов и ссылки к ним и если файл переименовывается программа не обнаруживая его закрывается.
Выход: Открыть несколько файлов Microsoft Document Image Writer чтобы ссылки на файлы обновились.


Обновлено 28.05.2010 09:50
 

Настройка почтового сервера на базе postfix

Настройка почтового сервера на базе postfix

Автор: lissyara.
Оригинал: http://www.lissyara.su/archive/postfix+courier-imap+mysql/


Эта статья в архиве. Postfix`ом я больше не пользуюсь, новых не будет. Используйте exim :))

MTA postfix - был создан как альтернатива sendmail, типа более простой, более шустрый и защищённый. Также в нём был отказ от монолитной структуры - он представляет собой много мелких программ занимающихся разными делами. Отличие от qmail состоит в том, что эти программы не умирают, выполнив порученное задание, а продолжают висеть в памяти. Это позволяет экономить ресурсы на запуск-убиение программ. Всё это, в том числе и структура postfix детально рассмотрено на его сайте, а на русском языке это можно найти тут.
Я на postfix пересел после sendmail, с которым довольно долго колупался пытаясь сделать на нём виртуальные домены, а в итоге просто плюнул и всё. Кроме поддержки виртуальных доменов postfix порадовал грамотным WEB-интерфейсом, такого у других почтовиков просто нет :(. А жаль... (просто в итоге я-то пользуюсь exim :)) А вот из плохого у него - кривая авторизация пользователей при отправке писем, куча конфигурационных файлов, пусть и с понятым и простым синтаксисом.
Итак, начало обычное - обновляем порты и поехали. Для начала ставим MySQL нужной нам (читать как Вам) версии, я пользуюсь 4.0: /root/>cd /usr/ports/databases/mysql40-server
/usr/ports/databases/mysql40-server/>make && make install && make clean


После чего добавляем строчку в /etc/rc.conf и запускаем mysqld. /usr/ports/databases/mysql40-server/>echo 'mysql_enable="YES"' >> /etc/rc.conf
/usr/ports/databases/mysql40-server/>cd /usr/local/etc/rc.d
/usr/local/etc/rc.d/>./mysql-server.sh start
Starting mysql.
/usr/local/etc/rc.d/>ps -ax | grep sql
54603 p1 S 0:00.02 /bin/sh /usr/local/bin/mysqld_safe --defaults-
54620 p1 S 0:02.54 /usr/local/libexec/mysqld --defaults-extra-fil
54622 p1 DL+ 0:00.00 grep sql
/usr/local/etc/rc.d/>


Если для редактирования файлов будете пользоваться такими же извращёнными методами что и я (это про echo 'mysql_enable="YES"' >> /etc/rc.conf), то аккуратней с угловыми скобками - если поставить одну, а не две, то строка будет не дописана в файл, а заменит содержимое файла (короче с одной скобкой в файле тока строка про майскул_енаблед и останется :)). Лучше пользуйтесь ее.
Дальше собираем phpMyAdmin (в общем-то он не нужен ,но я им пользуюсь, да и при установке он тащит с собой apache, php, и прочие необходимые вещи :)) /usr/local/etc/rc.d/>cd /usr/ports/databases/phpmyadmin
/usr/local/ports/phpmyadmin/>make && make install && make clean


Оставляем все опции по-умолчанию, у меня получилось (список того что я "выбрал"):
bzip2 library support
GD library support
OpenSSL support
PDFlib support
ZLIB support
MCrypt library support
Multi-byte character-set string support
За собой он тащит apache1.3 и php4. Для php выбираем:
Enable zend multibyte support
Build static OpenSSL extension
Для php4-gd выбираем всё, кроме поддержки японских шрифтов :), т.е.:
Include T1lib support
Enable TrueType string function
В опциях для php4-mpstring выбираем:
Enable multibyte regex support
А вот полный список того, что он за собой потащщит(для версии phpMyAdmin-2.6.4.r1):
php4-bz2-4.4.0
php4-zlib-4.4.0
libiconv-1.9.2_1
php4-mbstring-4.4.0
mysql-client-4.0.25
php4-mysql-4.4.0
autoconf-2.59_2
bison-1.75_2,1
gettext-0.14.5
gmake-3.80_2
imake-4.5.0
libltdl-1.5.20
libtool-1.5.20
m4-1.4.3
p5-gettext-1.03
php4-pcre-4.4.0
pkgconfig-0.17.2
t1lib-5.0.1,1
jpeg-6b_3
php4-gd-4.4.0
png-1.2.8_2
php4-4.4.0
help2man-1.35.1
freetype2-2.1.10_1
pdflib-6.0.2
pecl-pdflib-2.0.4
libmcrypt-2.5.7_1
php4-mcrypt-4.4.0
rc_subr-1.31_1
expat-1.95.8_3
apache-1.3.33_2
fontconfig-2.2.3,1
XFree86-libraries-4.5.0
Редактируем /usr/local/etc/apache/httpd.conf. Особо там нечего редактировать, если не собираетесь поднимать полноценный http-сервер. Если только для себя, тогда меняем эти пункты:# интерфейс, на котором работать.
#Если все интерфейсы, то - *
BindAddress 192.168.0.254

#И добавляем альяс на папку phpMyAdmin
Alias /phpMyAdmin/ "/usr/local/www/phpMyAdmin/"

<Directory "/usr/local/www/phpMyAdmin">
Options Indexes FollowSymlinks MultiViews
AllowOverride AuthConfig
Order deny,allow
Allow from all
</Directory>


Создаём файл паролей, и файл с пользователями (чтобы кто попало не шарился по этой папке) для апача:/usr/local/etc/rc.d/>cd /usr/local/www/
/usr/local/www/>htpasswd -bc .htpasswd lissyara my_password
Adding password for user lissyara
/usr/local/www/>htpasswd -b .htpasswd vasya_pryanikow vasin_password
Adding password for user vasya_pryanikow
/usr/local/www/>cat .htpasswd
lissyara:xrQpFTJSERWNY
vasya_pryanikow:kVrHSjsKfSDi.
/usr/local/www/>cd phpMyAdmin
/usr/local/www/phpMyAdmin/>cat > .htaccess
AuthName "Admin`s level :)"
AuthType Basic
AuthUserFile /usr/local/www/.htpasswd
Require valid-user

^C


Вкратце, о проделанных действиях - создали файл паролей, одновременно внеся туда пользователя lissyara с паролем my_password, затем добавили vasya_pryanikow с паролем vasin_password. Создали файл .htaccess - там прописали необходимость авторизации и путь до файла с паролями.
Добавляем apache_enable="YES" в rc.conf, и запускаем апача:/usr/local/www/phpMyAdmin/>echo 'apache_enable="YES"' >> /etc/rc.conf
/usr/local/www/phpMyAdmin/>../../etc/rc.d/apache.sh start
Starting apache.
[Thu Sep 8 10:07:06 2005] [alert] httpd: Could not determine the server's
fully qualified domain name, using 192.168.0.254 for ServerName
/usr/local/www/phpMyAdmin/>


У меня он ругнулся на жизнь - я не прописал DNS :) Ну и пробуем зайти по сети на него - http://192.168.0.254/phpMyAdmin/ (завершающий слэш обязателен, без него ругнётся что ненайдено). После чего даём пароль руту, правим /usr/local/www/phpMyAdmin/config.inc.php (заносим туда пароль root).
Ставим postfix:/usr/local/www/phpMyAdmin/>cd postfix
/usr/ports/mail/postfix/>cd /usr/ports/mail/postfix
/usr/ports/mail/postfix/>make && make install && make clean


Выбираем: MySQL map lookups и VDA (Virtual Delivery Agent). Если надо что-то ещё - выбирайте, а я не магистральный майлер поднимаю :) Потом будет следующий вопрос: Added user "postfix".
You need user "postfix" added to group "mail".
Would you like me to add it [y]?


- говорим y, следующий вопрос: Would you like to activate Postfix in /etc/mail/mailer.conf [n]? y


- тоже соглашаемся. Потом быренько вверх проскакивает инструкция что делать дальше, я первый раз прошляпил, и долго ковырялся над простыми вещами :(
If you have postfix configured in your /etc/mail/mailer.conf (answered yes to
the previous question) and would like to enable postfix to start at boot time,
please set these variables in your /etc/rc.conf file:

sendmail_enable="YES"
sendmail_flags="-bd"
sendmail_pidfile="/var/spool/postfix/pid/master.pid"
sendmail_procname="/usr/local/libexec/postfix/master"
sendmail_outbound_enable="NO"
sendmail_submit_enable="NO"
sendmail_msp_queue_enable="NO"

This will disable Sendmail completely, and allow you to use /etc/rc.d/sendmail
to start and stop postfix (FreeBSD 5.x and up). For FreeBSD 4.x, it will just
cause the system boot scripts to start sendmail for you.

Alternatively to the above settings, you can enable postfix to start with
the other local services, for example, after your database server starts if
you need it to be running for postfix. To do this, set in your rc.conf file:

sendmail_enable="NO"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"

Then make the following symbolic link:

cd /usr/local/etc/rc.d
ln -s /usr/local/sbin/postfix postfix.sh

With either startup configuration, you will want to disable some
Sendmail-specific daily maintenance routines in your /etc/periodic.conf file:

daily_clean_hoststat_enable="NO"
daily_status_mail_rejects_enable="NO"
daily_status_include_submit_mailq="NO"
daily_submit_queuerun="NO"

Ну, и выполняем инструкцию :), вернее её вторую часть, где говорится о том, что если надо чтобы postfix запускался после БД то надо.... Читаем инструкцию, короче :)
Ставим postfixadmin./usr/ports/>cd /usr/ports/mail/postfixadmin
/usr/ports/mail/postfixadmin/>make && make install && make clean


По окончании опять-таки вылезет инструкция:1. Create the MySQL Tables
--------------------------
In ${PREFIX}/www/postfixadmin/DATABASE.TXT you can find the table
structure that you need in order to configure Postfix Admin and Postfix
in general to work with Virtual Domains and Users

2. Configure
------------
Check the ${PREFIX}/www/postfixadmin/config.inc.php file. There you
can specify settings that are relevant to your setup.

The default password for the admin part of Postfix Admin is admin/admin.
This is specified in the .htpasswd file in the admin directory. Make sure
that the location of the .htpasswd file matches your path.

3. Configure Apache
-------------------
Add a line in your httpd.conf to allow the use of .htaccess file.

<Directory "/usr/local/www/postfixadmin">
Options Indexes
AllowOverride AuthConfig
</Directory>


Что и делаем: /usr/ports/mail/postfixadmin/>cd /usr/local/www/postfixadmin/
/usr/local/www/postfixadmin/>mysql --user=root --password= < DATABASE_MYSQL.TXT


Вообще-то я бы порекомендовал для начала чуть поправить этот файл в текстовом редакторе, - конкретно место где в БД вносится пользователи и пароли - пароли надо бы сменить... Можно это сделать и через phpMyAdmin. В этом примере я ничего не меняю. Чего вам делать не советую. Далее - запароливаем директорию postfixadmin - чтобы никто лишний не шарился. Для этого используем всё теже файлы, что и для phpMyAdmin: cp ../phpMyAdmin/.htaccess .htaccess
/usr/local/www/postfixadmin/>rm admin/.ht*


Последнее сделано потому, что я предпочитаю запароливать весь интерфейс postfixadmin, а не только его папку admin. И добавляем в конфиг апача следующие строчки: Alias /postfixadmin/ "/usr/local/www/postfixadmin/"

<Directory "/usr/local/www/postfixadmin">
Options Indexes FollowSymlinks MultiViews
AllowOverride AuthConfig
Order deny,allow
Allow from all
</Directory>


Перезапускаем apache и пробуем зайти по адресу http://192.168.0.254/postfixadmin/ Там нам предлагают запустить setup. У меня он ругнулся на отсутствующий модуль php и дал подробную инструкцию что сделать. После выпоннения инструкции надо перезапустить апач (этого в инструкции нет). После всё работает. (Ну, там стандартные ошибки из версии в версию - надо исправить кодировку в файле templates/header.tpl на windows-1251 и влепить в меню 4 штуки <br>-ов чтоб не наезжало друг а друга в файле templates/admin_menu.tpl).
Можно конфигурить postfix. В директории /usr/local/etc/postfix создаём следующие файлы:
/usr/local/etc/postfix/mysql_relay_domains_maps.cfuser = postfix
password = postfix
hosts = localhost
dbname = postfix
table = domain
select_field = domain
where_field = domain


/usr/local/etc/postfix/mysql_virtual_alias_maps.cfuser = postfix
password = postfix
hosts = localhost
dbname = postfix
table = alias
select_field = goto
where_field = address


/usr/local/etc/postfix/mysql_virtual_domains_maps.cfuser = postfix
password = postfix
hosts = localhost
dbname = postfix
table = domain
select_field = transport
where_field = domain


/usr/local/etc/postfix/mysql_virtual_mailbox_limit_maps.cfuser = postfix
password = postfix
hosts = localhost
dbname = postfix
table = mailbox
select_field = quota
where_field = username


/usr/local/etc/postfix/mysql_virtual_mailbox_maps.cfuser = postfix
password = postfix
hosts = localhost
dbname = postfix
table = mailbox
select_field = maildir
where_field = username


/usr/local/etc/postfix/main.cfqueue_directory = /var/spool/postfix
command_directory = /usr/local/sbin
daemon_directory = /usr/local/libexec/postfix
mail_owner = postfix
mynetworks_style = subnet
mynetworks = 192.168.8.0/24, 127.0.0.0/8
sendmail_path = /usr/local/sbin/sendmail
newaliases_path = /usr/local/sbin/newaliases
mailq_path = /usr/local/sbin/mailq
setgid_group = maildrop
html_directory = no
manpage_directory = /usr/local/man
sample_directory = /usr/local/etc/postfix
readme_directory = no
myhostname = mail.my_domain.ru
mydomain = my_domain.ru
myorgin = $mydomain
mydestination = localhost
local_transport = virtual
smtpd_recipient_restrictions =
permit_mynetworks,
reject_non_fqdn_hostname,
reject_non_fqdn_sender,
reject_unauth_destination,
reject_unauth_pipelining,
reject_invalid_hostname,
reject_rbl_client list.dsbl.org,
reject_rbl_client bl.spamcop.net,
reject_rbl_client sbl-xbl.spamhaus.org
content_filter = scan:127.0.0.1:10025
receive_override_options = no_address_mappings

relay_domains = mysql:/usr/local/etc/postfix/mysql_relay_domains_maps.cf
virtual_alias_maps = mysql:/usr/local/etc/postfix/mysql_virtual_alias_maps.cf
virtual_gid_maps = static:125
virtual_mailbox_base = /var/spool/postfix/virtual/
virtual_mailbox_domains = mysql:/usr/local/etc/postfix/mysql_relay_domains_maps.cf
virtual_mailbox_limit = 51200000
virtual_mailbox_maps = mysql:/usr/local/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_minimum_uid = 125
virtual_transport = virtual
virtual_uid_maps = static:125
# QUOTA
virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
virtual_mailbox_limit_maps = \
mysql:/usr/local/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = Дохрена почты скопилось в ящике. Надо удалить!
virtual_overquota_bounce = yes
unknown_local_recipient_reject_code = 550
transport_map = mysql:/usr/local/etc/postfix/mysql_virtual_domains_maps.cf
message_size_limit = 10240000
smtpd_recipient_limit = 5



/usr/local/etc/postfix/master.cf - тут редактируем не все строки# CLAMAV
scan unix - - n - 16 smtp -o smtp_send_xfo
127.0.0.1:10026 inet n - n - 16 smtpd
-o content_filter=
-o smtpd_helo_restrictions=
-o smtpd_client_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks_style=host
-o smtpd_autorized_xforward_hosts=127.0.0.0/8



Затем ставим ClamAV и ClamSMTP:
/usr/local/etc/postfix/>cd /usr/ports/security/clamsmtp
/usr/ports/security/clamsmtp/>make && make install && make clean


Чуть погодя появляется окошко ClamAV с опциями (ClamSMTP его за собой тащщит), где ничё не выбираем. Затем конфигурим ClamSMTP:
/usr/local/etc/postfix/clamsmtpd.conf (его там нет, есть только исходный clamsmtpd.conf-sample)OutAddress: 10026
Listen: 0.0.0.0:10025
ClamAddress: /var/run/clamav/clamd
Header: X-AV-Checked: ClamAV using ClamSMTP on mail.my_domain.ru
TempDirectory: /tmp/clamav_tmp
Quarantine: on
User: clamav


И ClamAV:
/usr/local/etc/postfix/clamd.confLogFile /var/log/clamd.log
PidFile /var/run/clamav/clamd.pid
DatabaseDirectory /var/db/clamav
LocalSocket /var/run/clamav/clamd
FixStaleSocket
User clamav
ScanPE
ScanOLE2
ScanMail
ScanHTML
ScanArchive
ScanRAR
ArchiveMaxFiles 5000


Добавляем в /etc/rc.conf строки, создаём папки, запускаем это хозяйство и сразу его обновляем:/usr/local/etc/>echo 'clamav_clamd_enable="YES"' >> /etc/rc.conf
/usr/local/etc/>echo 'clamsmtpd_enable="YES"' >> /etc/rc.conf
/usr/local/etc/>cd rc.d
/usr/local/etc/rc.d/>mkdir /tmp/clamav_tmp
/usr/local/etc/rc.d/>chown clamav /tmp/clamav_tmp
/usr/local/etc/rc.d/>
/usr/local/etc/rc.d/>./clamsmtpd.sh start
Starting clamsmtpd.
/usr/local/etc/rc.d/>./clamav-clamd.sh start
Starting clamav_clamd.
/usr/local/etc/rc.d/>ps -ax | grep clam
87674 ?? Is 0:00.00 /usr/local/sbin/clamsmtpd -f /usr/local/etc/clamsmtpd.conf
87683 ?? Ss 0:00.01 /usr/local/sbin/clamd
87698 p0 S+ 0:00.01 grep clam
/usr/local/etc/rc.d/>mkdir /var/spool/postfix/virtual
/usr/local/etc/rc.d/>chown postfix:mail /var/spool/postfix/virtual
/usr/local/etc/rc.d/>
/usr/local/etc/rc.d/>newaliases
/usr/local/etc/rc.d/>
/usr/local/etc/rc.d/>freshclam
freshclam: Command not found.
/usr/local/etc/rc.d/>rehash
/usr/local/etc/rc.d/>freshclam
ClamAV update process started at Fri Sep 9 17:50:11 2005
main.cvd is up to date (version: 33, sigs: 36102, f-level: 5, builder: tkojm)
Downloading daily.cvd [*]
ERROR: Mirrors are not fully synchronized. Please try again later.
Trying again in 5 secs...
ClamAV update process started at Fri Sep 9 17:50:17 2005
main.cvd is up to date (version: 33, sigs: 36102, f-level: 5, builder: tkojm)
Downloading daily.cvd [*]
daily.cvd updated (version: 1072, sigs: 4080, f-level: 5, builder: sven)
Database updated (40182 signatures) from database.clamav.net (IP: 213.248.60.121)
Clamd successfully notified about the update.
/usr/local/etc/rc.d/>


Во как. Попал на момент синхронизации самого зеркала. Вообще неплохо добавить строчку обновления ClamAV в crontab - пусть обновляется 3-4 раза в сутки. Перезагружаем машину, и смотрим, запустился ли postfix./usr/home/lissyara/>ps -ax | grep master
215 ?? Is 0:02.55 /usr/local/libexec/postfix/master
/usr/home/lissyara/>


для тестирования работы создаём два домена через postfixadmin - my_domain.ru и mail.my_domain.ru. В домене mail.my_domain.ru создаём альяс * - чтоб вся его почта валилась на какой нужно ящик.
В качестве pop3 и imap демонов выступит courier-imap. Почему он? Ну просто настраивается он легко, и возможностей выше крыши. И нравится мне он. :)/root/>cd /usr/ports/mail/courier-imap/
/usr/ports/mail/courier-imap/>make && make install && make clean


Выбираем только одну опцию - AUTH_MySQL. Если Вам нужно что-то ещё - ставьте. Он за собой потащщит courier-authlib-base и courier-authlib-mysql. После чего настраиваем:
/usr/local/etc/authlib/authmysqlrcMYSQL_SERVER localhost
MYSQL_USERNAME postfix
MYSQL_PASSWORD postfix
MYSQL_PORT 3306
MYSQL_DATABASE postfix
MYSQL_USER_TABLE `mailbox`
MYSQL_CRYPT_PWFIELD `password`
MYSQL_UID_FIELD 125
MYSQL_GID_FIELD 125
MYSQL_LOGIN_FIELD `username`
MYSQL_NAME_FIELD `name`
MYSQL_HOME_FIELD CONCAT('/var/spool/postfix/virtual/', `maildir`)
MYSQL_MAILDIR_FIELD CONCAT('/var/spool/postfix/virtual/', `maildir`)
DEFAULT_DOMAIN my_domain.ru


После чего добавляем строчки в /etc/rc.conf и запускаем это хозяйство: /usr/local/etc/authlib/>cd /usr/local/etc/rc.d
/usr/local/etc/rc.d/>echo 'courier_imap_pop3d_enable="YES"' >> /etc/rc.conf
/usr/local/etc/rc.d/>echo 'courier_imap_imapd_enable="YES"' >> /etc/rc.conf
/usr/local/etc/rc.d/>echo 'courier_authdaemond_enable="YES"' >> /etc/rc.conf
/usr/local/etc/rc.d/>./courier-authdaemond.sh start
Starting courier_authdaemond.
/usr/local/etc/rc.d/>./courier-imap-imapd.sh start
Starting courier_imap_imapd.
/usr/local/etc/rc.d/>./courier-imap-pop3d.sh start
Starting courier_imap_pop3d.
/usr/local/etc/rc.d/>ps -ax | grep imap
68539 ?? I 0:00.00 /usr/local/sbin/courierlogger -pid=/var/run/imapd.pid
68540 ?? I 0:00.02 /usr/local/libexec/courier-imap/couriertcpd -address=0
68549 ?? S 0:00.00 /usr/local/sbin/courierlogger -pid=/var/run/pop3d.pid
68550 ?? S 0:00.02 /usr/local/libexec/courier-imap/couriertcpd -address=0
68552 p0 S+ 0:00.01 grep imap
/usr/local/etc/rc.d/>sockstat | grep couri
root couriert 68550 3 tcp4 *:110 *:*
root couriert 68540 3 tcp4 *:143 *:*
root courierl 68549 4 dgram syslogd[70]:3
root courierl 68539 4 dgram syslogd[70]:3
root courierl 68523 4 dgram syslogd[70]:3
/usr/local/etc/rc.d/>sockstat | grep auth
root authdaem 68529 5 stream /var/run/authdaemond/socket.tmp
root authdaem 68528 5 stream /var/run/authdaemond/socket.tmp


Ну, вот и всё. Всё работает и крутится :)
Данная конфигурация тестилась на следующей машине:
P-II 233 MHz
64 Mb RAM
8 Gb HDD
Версии установленного ПО (без учёта мелочи что тянется следом):
courier-authlib-base-0.57 Courier authentication library base
courier-authlib-mysql-0.57 MySQL support for the Courier authentication library
courier-imap-4.0.4,1 IMAP (and POP3) server that provides access to Maildir mail
postfix-2.2.5,1 A secure alternative to widely-used Sendmail
postfixadmin-2.1.0_1 PHP frontend to postfix and mySQL
mysql-client-4.0.25 Multithreaded SQL database (client)
mysql-server-4.0.25 Multithreaded SQL database (server)

P.S. Добавлено 2006-01-14 в 16:20
Жизнь полна сюрпризов и неожиданностей :))) На старой работе понадобилось приделать отправку почты снаружи - а там конфигурация ровно как описанная в статье - соответствено снаружи ничё не предусмотрено. Что потребовалось - пересобрать и переустановить postfix с опциями (предварительно удалив старый - pkg_delete):[X] SASL2 Cyrus SASLv2 (Simple Authentication and Security Layer)
[X] MySQL MySQL map lookups (choose version with WITH_MYSQL_VER)
[X] VDA VDA (Virtual Delivery Agent)


SASL2 он сам за собой потащщит. Но, перед тем как установить SASL2 его надо пропатчить. Причина проста - sasl не умеет работать с криптоваными паролями, а в бд они хранятся в зашифрованном виде. Затем и патчим - чтоб научить :) Патч берём отсюда. Сохраняем его в /usr/ports/security/cyrus-sasl2/files/ под именем patch-crypt. Вот его содержимое (на случай если тот сервер будет лежать):/usr/ports/security/cyrus-sasl2/files/>cat patch-crypt
*** lib/checkpw.c.orig Thu Jan 13 09:44:01 2005
--- lib/checkpw.c Thu Jan 13 09:47:17 2005
***************
*** 143,149 ****
"*cmusaslsecretPLAIN",
NULL };
struct propval auxprop_values[3];
!
if (!conn || !userstr)
return SASL_BADPARAM;

--- 143,153 ----
"*cmusaslsecretPLAIN",
NULL };
struct propval auxprop_values[3];
!
! /* added by lopaka */
! char salt[31];
! char *crypt_passwd = NULL;
!
if (!conn || !userstr)
return SASL_BADPARAM;

***************
*** 180,191 ****
goto done;
}

/* At the point this has been called, the username has been canonified
* and we've done the auxprop lookup. This should be easy. */
if(auxprop_values[0].name
&& auxprop_values[0].values
&& auxprop_values[0].values[0]
! && !strcmp(auxprop_values[0].values[0], passwd)) {
/* We have a plaintext version and it matched! */
return SASL_OK;
} else if(auxprop_values[1].name
--- 184,220 ----
goto done;
}

+ /* 20041008 added by lopaka */
+ /* encrypt the passwd and then compare it with the encrypted passwd */
+ if(!strncmp(auxprop_values[0].values[0],"$1",2))
+ {
+ /* MD5 */
+ /* obtain salt = first 12 chars */
+ crypt_set_format("md5");
+ strlcpy(salt,auxprop_values[0].values[0],13);
+ }
+ else if(!strncmp(auxprop_values[0].values[0],"$2",2))
+ {
+ /* BLF (blowfish) */
+ /* obtain salt = first 30 chars */
+ crypt_set_format("blf");
+ strlcpy(salt,auxprop_values[0].values[0],31);
+ }
+ else
+ {
+ /* DES */
+ /* obtain salt = first 2 chars */
+ crypt_set_format("des");
+ strlcpy(salt,auxprop_values[0].values[0],3);
+ }
+ crypt_passwd = crypt(passwd,salt);
+
/* At the point this has been called, the username has been canonified
* and we've done the auxprop lookup. This should be easy. */
if(auxprop_values[0].name
&& auxprop_values[0].values
&& auxprop_values[0].values[0]
! && !strcmp(auxprop_values[0].values[0], crypt_passwd)) {
/* We have a plaintext version and it matched! */
return SASL_OK;
} else if(auxprop_values[1].name



После чего инсталлируем postfix и делаем файлик /usr/local/lib/sasl2/smtpd.conf следующего содержания:log_level: 7
pwcheck_method: auxprop
sql_engine: mysql
mech_list: plain login cram-md5 digest-md5
sql_hostnames: localhost
sql_user: postfix
sql_passwd: postfix
sql_database: postfix
sql_select: SELECT password FROM mailbox WHERE username = '%u@%r'
sql_verbose: true


(На пункт log_level он почему-то забивает, причину пока не нашёл), добавить в main.cf следующие строки:broken_sasl_auth_clients = yes
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous


И рихтануть строку smtpd_recipient_restrictions = было так:smtpd_recipient_restrictions =
permit_mynetworks,
reject_non_fqdn_hostname,
reject_non_fqdn_sender,
reject_unauth_destination,
reject_unauth_pipelining,
reject_invalid_hostname,
reject_rbl_client list.dsbl.org,
reject_rbl_client bl.spamcop.net,
reject_rbl_client sbl-xbl.spamhaus.org


А станет так:smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_non_fqdn_hostname,
reject_non_fqdn_sender,
reject_unauth_destination,
reject_unauth_pipelining,
reject_invalid_hostname,
reject_rbl_client list.dsbl.org,
reject_rbl_client bl.spamcop.net,
reject_rbl_client sbl-xbl.spamhaus.org


После чего делаем команду postfix reload и можно пользоваться почтой снаружи (не забудте указать в почтовом клиенте аутентификацию на отправку - логин-пароль такой же как и на приёме).


Обновлено 28.05.2010 12:22
 


Страница 1 из 158.

Операционные системы

Сообщество в VK / COMMUNITY in VK


  • Вопросы по поводу написанных статей можно обсудить в нашем сообществе в Вконтакте / Questions about written articles can be discussed in our community in Vkontakte Вопросы по поводу написанных статей можно обсудить в нашем сообществе в  Вконтакте / Questions about written articles can be discussed in our community in Vkontakte
Яндекс.Метрика