воскресенье, 31 января 2010 г.

Звук на ASUS A7U

Ещё одна попытка решить проблему со звуком на ASUS A7U. Решение обнаружил здесь: http://www.linux.org.ru/view-message.jsp?msgid=3706331
Звук на ASUS A7U, A7K с Intel HDA (SBx00 Azalia, Realtek ALC660-VD)

Хочу поделиться решением неприятной проблемы со звуком на некоторых моделях ноутбуков ASUS. Подвержены как минимум две модели: A7U и A7K. Проблема довольно старая (я бы даже сказал, застарелая), и до недавнего времени красивого решения не имевшая (кроме как использовать старые версии ядра и alsa-driver). Была замечена даже на ЛОРе.

Звуковая карта определяется lspci так:
# lspci | grep "Intel HDA"
00:14.2 Audio device: ATI Technologies Inc SBx00 Azalia (Intel HDA)
Версия кодека:
# cat /proc/asound/card0/codec#0 | grep Codec
Codec: Realtek ALC660-VD
Симптомы: звук работает только со старыми версиями alsa-driver <= 1.0.15. Все последующие версии либо вообще не выдают звука, либо выдают очень тихий, шипящий и щёлкающий звук (слышно если выкрутить все регуляторы на максимум и хорошо прислушаться). Манипуляции с параметрами модуля snd-hda-intel (model, position_fix, enable_msi, probe_mask) не помогают. Причина: эти модели используют один и тот же выход для вывода и аналогового, и цифрового сигнала (S/PDIF). По идее, драйвер должен сам определять, какое оборудование подключено к устройству, и в зависимости от этого выдавать либо аналоговый, либо цифровой сигнал. Но по какой-то причине это перестало работать начиная с alsa-driver 1.0.16. Решение: заставить HDA-кодек выдавать аналоговый сигнал. Для этого нужно: прописать в modprobe.conf options snd-hda-intel model=auto position_fix=1 скачать и собрать утилиту hda-verb; добавить в rc.local (или что у вас там) следующие строки: /usr/local/sbin/hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_MASK 3 /usr/local/sbin/hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DIRECTION 1 /usr/local/sbin/hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 1 наслаждаться звучанием. Это элегантное решение было найдено пользователем dfm7a с багтрекера ALSA (баг #0004380), за что ему огромный респект и уважуха. Работает для моего ASUS A7U, возможно сработает также для некоторых похожих моделей. Наконец-то я смог без потерь обновить ядро, до этого приходилось сидеть на древнем 2.6.23 — с более новыми ядрами alsa-driver 1.0.15 не собирался. Спасибо за внимание (-; theSoul (*) (15.05.2009 11:59:52) Asus A7U звук external amplifier нужно отключить галочкой на младших ASUS может и на A7U также.. Silvy (*) (23.10.2009 13:59:43) Решение проблем со звуком на ASUS A7U и новым ядром ubuntu 9.04 >P.S. На моем слабосильном A7U стандартное ядро собиралось около 4 часов (((

Да лана. На атоме ядро 30-40 минут собирается с -j2.
Dimez (*) (22.10.2009 23:11:53)

Решение проблем со звуком на ASUS A7U и новым ядром ubuntu 9.04

В дополнение к этой http://www.linux.org.ru/view-message.jsp?msgid=3706331 теме.

Все было хорошо и замечательно, пока не обновился до последней версии ядра.

В /dev/snd по умолчанию нет девайса hwC0D0. При раскапывании корней данной проблемы выяснилось, чтоб сей девайс появился необходимо пересобрать ядро с включенной опцией HWDEP.

P.S. На моем слабосильном A7U стандартное ядро собиралось около 4 часов (((
Markusha (*) (22.10.2009 18:56:28)

Re: [Solution] Звук на ASUS A7U, A7K с Intel HDA (SBx00 Azalia, Realtek ALC660-VD)

ох. надо б на моей аудиджи испытать, а то там тоже самое, звук вроде есть, но похоже только на цифровой выход.
iSage (*) (15.05.2009 18:04:12)

Re: [Solution] Звук на ASUS A7U, A7K с Intel HDA (SBx00 Azalia, Realtek ALC660-VD)

Этот способ подойдёт только для встроенных карточек на базе Intel HDA. Прога hda-verb предназначена для работы c HDA-кодеком напрямую. А для Аудиджи, если мне не изменяет амнезия, предназначен драйвер emu10k1.
theSoul (*) (15.05.2009 18:20:17)

Re: [Solution] Звук на ASUS A7U, A7K с Intel HDA (SBx00 Azalia, Realtek ALC660-VD)

>ох. надо б на моей аудиджи испытать, а то там тоже самое, звук вроде есть, но похоже только на цифровой выход.

AudigySE? Тогда запускай альтернативную ОСь и переключи режим digital/analog, должно после этого все заработать в лялеге.
linux4ever (*) (15.05.2009 23:12:41)

Re: [Solution] Звук на ASUS A7U, A7K с Intel HDA (SBx00 Azalia, Realtek ALC660-VD)

нет у меня альтернативной оси
iSage (*) (16.05.2009 13:02:16)

Решение проблем со звуком на ASUS A7U и новым ядром ubuntu 9.04

>>ядро собиралось около 4 часов (((

O_o на трипневом селероне не больше часа собиралось
madcore (*) (22.10.2009 22:28:38)

Решение проблем со звуком на ASUS A7U и новым ядром ubuntu 9.04

Хм... странно. Именно что 4 часа. В итоге получилось весом в 280Мб.

Исходники брал с официального репа, конфиг из /boot , поправил только один пункт. Что я не так сделал?
Markusha (*) (22.10.2009 23:19:58)

Решение проблем со звуком на ASUS A7U и новым ядром ubuntu 9.04

cat /etc/modprobe.d/modprobe.conf в студию!
nanofon (*) (23.10.2009 21:35:55)

Решение проблем со звуком на ASUS A7U и новым ядром ubuntu 9.04

=) Поздно, я уже снес 9.04, с ATI x1200 проблемы были. Поставил interpid из сохранившегося дистрибутива.
Markusha (*) (23.10.2009 21:50:08)

Asus A7U звук

Легендарный солюшн: http://www.linux.org.ru/view-message.jsp?msgid=3706331#comment-3707588

Сделал все как написано, звука нет. Если в алсамиксере включаю на максимум фронт, то колонки, подключенные в разъем наушников на полной громкости, играют тихо и хреново. Если перезапустить alsa, звука уже нет

Куда копать?

$ uname -a Linux megafon 2.6.31-ARCH #1 SMP PREEMPT Tue Oct 13 13:36:23 CEST 2009 i686 AMD Athlon(tm) 64 X2 Dual-Core Processor TK-53 AuthenticAMD GNU/Linux

$ lspci |grep HDA 00:14.2 Audio device: ATI Technologies Inc SBx00 Azalia (Intel HDA)
nanofon (*) (23.10.2009 0:50:17)

Re: [Solution] Звук на ASUS A7U, A7K с Intel HDA (SBx00 Azalia, Realtek ALC660-VD)

Наверное, это бы надо в FAQ
ist76 (*) (15.05.2009 12:36:13)

Re: [Solution] Звук на ASUS A7U, A7K с Intel HDA (SBx00 Azalia, Realtek ALC660-VD)

Для фака оно может слишком специфично, а вот в индексе гугла пусть будет — там пока только вопросы без ответов. Неплохо бы запостить на ubuntuforums.org да на forums.gentoo.org.
theSoul (*) (15.05.2009 13:08:17)

Вот такие-вот неприятности... А воз и ныне там...

Настройка звука в Ubuntu

Имеется: Ubuntu 9.10 на ноутбуке ASUS A7U со звуковой картой:
ATI Technologies Inc Radeon X1200 Series Audio Controller.
После установки системы звука нет. После долгих поисков наткнулся на статью
http://ubuntueasy.com/oborudovanie/nastrojka-zvuka-v-ubuntu-904-na-noutbuke-toshiba-satellite-l30-114
Статья помогла частично: звук появился, но встроенный микрофон так и не заработал. Причём, самое неприятное, после перезагрузки звук снова пропал. Да ещё так пропал, что в Gnom'е пропали все звуковые карты вообще. Тогда я повторно провёл идентификацию аудиокарты, как описано в первой статье, а затем воспользовался советами из второй статьи (занёс в blacklist "неправильное" оборудование)...
Вот первая статья:

ATI Technologies Inc IXP SB4x0 High Definition Audio Controller
(HDA ATI SB (ALC861))...
В наличии имею Ubuntu 9.04 на ноутбуке Toshiba Satellite L30-114 со звуковой картой:
HDA ATI SB (ALC861)
ATI Technologies Inc IXP SB4x0 High Definition Audio Controller
Кто является обладателем ноутбука с такой звуковой картой знают, что есть проблема с драйверами.
Предистория
Начал я свое знакомство я с Ubuntu 8.04, там звук не заработал после установки, но 1-2 часа полазив по форумах я нашел решение на http://forum.ubuntu.ru/ где было достаточно в /etc/modprobe.d/alsa-base.conf дописать строку
options snd-hda-intel model=asus-laptop
или
options snd-hda-intel model=asus
причем значение параметра может меняться в зависимости от вида ALC..... , но для данного ноутбука полноценно работающими являются только эти 2.
У меня наступило счастье все работает — я был доволен …..
Но время идет и я решил перейти на Ubuntu 8.10, но там этот метод не помог. Вернее помог, звук появился, но он был прерывистый, тормозил и т.д. Что я только не пробовал (и сносил pulseaudio), но толком ничего не помогало. Хотя потом понял, что пульс не причем (специально ставил Debian 5.0 где пульса нет — там такая же проблема). Короче потратив на поиски кучу времени я так и не смог заставить нормально работать звук. Пришлось откатиться на Ubuntu 8.04.
Начал я день за днем ждать выхода Ubuntu 9.04, но какое было мое разочарование, что там такая же проблема как в Ubuntu 8.10. Короче с пол месяца у меня стоял Ubuntu 9.04 (откат на 8.04 решил не делать), но без нормального звука — постоянные перезагрузки с sudo alsa force-reload и ловля нормального звука — нет, снова перезагрузка.
И потом я подумал про мудрецов которые говорили: «Зашел в тупик — вернись на начало и начни все заново».
Настройка
Вот я и начал заново. Начал искать информацию как собрать alsa c нуля. Поиски мои закончились на сайте http://wiki.ubuntu.com/RussianDocumentation/AlsaHda-intel
В принципе практически сделал все как там описано, но есть нюансы с которыми пришлось столкнуться. Решил описать, что бы другие не мучились как я. :)
И начал все с того, что снес абсолютно все, что касалось звука (alsa, pulseaudio). В итоге после перезагрузки у меня не определилась звуковая.
Дальше я начал выполнять установку, как описано в ссылке, только вместо 1.0.16 сборки взял уже 1.0.20 (я взял 1.0.22 - прим. автора)
1.Для начала следует установить необходимые пакеты для сборки ПО из исходных текстов:
sudo apt-get install linux-headers-`uname -r` build-essential gcc gawk libgettext-ruby-util libgettext-ruby1.8 libncurses5-dev

2.Нужно скачать исходные тексты ALSA с официального сайта, желательно самые последние:
wget ftp://ftp.alsa-project.org/pub/driver/alsa-driver-1.0.20.tar.bz2
wget ftp://ftp.alsa-project.org/pub/lib/alsa-lib-1.0.20.tar.bz2
wget ftp://ftp.alsa-project.org/pub/utils/alsa-utils-1.0.20.tar.bz2

3.Распаковать каждый архив и перейти в директорию ./alsa-driver-1.0.20:
tar jxvf alsa-driver-1.0.20.tar.bz2
tar jxvf alsa-lib-1.0.20.tar.bz2
tar jxvf alsa-utils-1.0.20.tar.bz2
cd ./alsa-driver-1.0.20

4.Собираем ALSA с поддержкой звуковой карты HDA-Intel:
./configure -with-cards=hda-intel
make
sudo make install

5.Собираем alsa-lib:
cd ../alsa-lib-1.0.20
./configure
make
sudo make install

6.Собираем alsa-utils:
cd ../alsa-utils-1.0.20
./configure
make

а вот здесь у меня выдало ошибку (/bin/bash: xmlto: command not found). Для того что бы все было нормально нужно в консоли выполнить
sudo apt-get install xmlto
После этого сново выполнить
make
Потом
sudo make install

7.Теперь пришло время настроить alsa.
sudo alsaconf

(да причем не asoundconf, а именно alsaconf )
Выбираем нужную звуковую карту, в нашем случае это hda-intel, далее просто нажимаем OK:
В процессе нахождения звуковой карты он создаст файл etc/modprobe.d/50-sound.conf а файл alsa-base.conf я создал сам путем копированием файла etc/modprobe.d/50-sound.conf (так как я снес его вначале, когда удалял все что связано со звуком :) )

8.Добавляем в /etc/modrpobe.d/alsa-base.conf и /etc/modrpobe.d/50-sound.conf следующую строчку (на самом деле на счет файла 50-sound.conf — может он и не нужен, но я уже не экспериментировал):
options snd-hda-intel model=asus-laptop

9.Перезапускаем alsa и наслаждаемся звуком:
sudo /etc/init.d/alsasound reload
Но здесь нужно еще перезагрузить машину, и настроить регуляторы в alsamixer. И тогда все работает как нужно, даже исчез треск с колонок когда звук ставишь на 0 а проигрыватель играет (раньше трещало как будту короткое замыкание)

P.S. Если будет время попробую pulseaudio поставить назад.
Также извините за ошибки и т.д (писал ночью)

Вот следующая статья:
http://lamskoy.livejournal.com/tag/sound

Я перепробовал несколько дистрибутивов линукса на своем ноуте - ни на одном из них звук сам не заработал.
Аидоустройства ядро и alsa операционной системы видели, но звук не выдавали хоть ты тресни.

Вот что выдала команда lspci | grep -i audio:
00:14.2 Audio device: ATI Technologies Inc SBx00 Azalia (Intel HDA)
01:05.2 Audio device: ATI Technologies Inc Radeon X1200 Series Audio Controller
Перепробовал кучу решений (в основном с настройками / пересборкой alsa), ничего не помогало.
Оказалось проблема в том, что alsa не может правильно установить режим выхода звука - по умолчанию он идет на HDMI выход, а нужно пускать его на аналоговый.
Помогло следующее решение (запускать от root-а):
wget http://www.kr.xemacs.org/pub/linux/kernel/people/tiwai/misc/hda-verb/hda-verb-0.3.tar.gz (прим. автора: ссылка оказалась нерабочая... Я то же самое нашёл здесь: ftp://ftp.suse.com/pub/people/tiwai/misc/ )...

tar -xf hda-verb-0.3.tar.gz
cd hda-verb-0.3
make -s
cp hda-verb /usr/local/sbin/

cat > /usr/local/sbin/sound.sh << EOF #!/bin/bash /usr/local/sbin/hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_MASK 3
/usr/local/sbin/hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DIRECTION 1
/usr/local/sbin/hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 1

EOF

chmod a+x /usr/local/sbin/sound.sh
echo blacklist snd-hda-codec-atihdmi >> /etc/modprobe.d/blacklist.conf
echo blacklist snd-hda-codec-si3054 >> /etc/modprobe.d/blacklist.conf
echo /usr/local/sbin/sound.sh >> /etc/conf.d/local.start

Последняя строка специфична для Gentoo, в Debian-based дистрибутивах нужно писать в /etc/rc.local
Чтобы устройства определились правильно и заработал микрофон, иногда приходится добавлять две строки в blacklist.conf и перезапустить alsa. Пример тому Ubuntu 9.10.
Запускаем /usr/local/sbin/sound.sh, если все проходит успешно, видим чтото в духе:

nid = 0x1, verb = 0x716, param = 0x3 value = 0x0
nid = 0x1, verb = 0x717, param = 0x1 value = 0x0
nid = 0x1, verb = 0x715, param = 0x1 value = 0x0

Радуемся, проверяем наличие звука :)
Если ядро собранно без включенной опции конфига CONFIG_SND_HDA_HWDEP=y (например во всех версиях generic-ядра Ubuntu 9.04 эта опция выключена по дефолту), видим ошибку:
Hardware device was not found: /dev/snd/hwC0D0
В этом случае необходимо пересобрать ядро с CONFIG_SND_HDA_HWDEP=y
Тем кто привык пользоватся make menuconfig:
Зайти в Device Drivers -> Sound Support -> Advanced Linux Sound Architecture -> Pci Sound Devices -> Intel HD Audio
Выбрать Build hwdep interface for HD-audio driver
Остается только пересобрать ядро и перезапустить систему.
Сборку ядра смотрите в хендбуке для своего дистрибутива линукса.

Однако, микрофон по-прежнему не работает...
Ищу информацию дальше...

понедельник, 9 ноября 2009 г.

Создание списка установленных пакетов в Linux Ubuntu, Debian, Mint, и работа с ним

Взято с http://sudouser.com/sozdanie-spiska-ustanovlennyx-paketov-v-linux-ubintu-debian-mint-i-rabota-s-nim.html (4 апреля 2009 12:45)

В терминале, или в консоли набираем команду:
sudo dpkg --get-selections "*" > /media/disk/my_packages.txt

Данная команда выведет список всех пакетов в файл /media/disk/my_packages.txt (в примере описана флэшка с именем disc  примонтированная стандартными средствами, тоесть автоматически) вы должны указать свой путь, или просто имя файла, тогда он будет создан в текущей директории.
Для установки пакетов из полученного файла на другой машине набираем следующуие команды:
sudo dpkg --set-selections < /media/disk/my_packages.txt
 sudo apt-get -u dselect-upgrade


Первая команда скормит список пакетов из файла /media/disk/my_packages.txt (указывайте путь до вашего файла) пакетному менеджеру, вторая начнет их установку.
  Надеюсь, описанный способ вам поможет сэкономить массу времени на установке пакетов и пригодится в работе.
Оригинал (English version): http://www.howtoforge.com

четверг, 29 октября 2009 г.

Аутентификация с помощью USB-флешки под Ubuntu


22.09.2008


Если надоело постоянно вводить пароль при аутентификации, при запуске команды sudo под ubuntu, и уровень безопасности позволяет, возможно настроить систему на аутентификацию с помощью usb-флешки.
Для этого у вас должна быть флешка, которой никто, кроме вас, не пользуется, т.к. при вставленной такой флешки каждому, кто получит доступ к машине, будут предоставлены все ваши имеющиеся в системе права.
Для начала установим библиотеку и утилиты, необходимые для работы модуля pamusb:
sudo aptitude install libpam-usb pamusb-tools
Далее вставим флешку в usb-порт, и добавим её следующей командой:
sudo pamusb-conf --add-device MyFlashka
Выберите из списка доступных дисков, если у вас в этот момент подключено несколько флешек.
Далее укажем пользователя, который может аутентифицироваться с помощью этой флешки:
sudo pamusb-conf --add-user user_login
где user_login - ваш логин в системе, при этом свяжите данного пользователя с указанной ранее флешкой.
Всё, проверить аутентификацию можно командой:
sudo pamusb-check user_login
И последняя часть, нужно прописать необязательную возможность аутентификации (т.е. если не будет флешки, будет по паролю как обычно), для этого в начале файла /etc/pam.d/common-auth до строки:
auth requisite pam_unix.so nullok_secure
вставьте строку:
auth sufficient pam_usb.so
Теперь всё, можете пользоваться.
На оффсайте описано, как с помощью pamusb-agent сделать так, что при отключении флешки будет автоматом запускаться хранитель экрана, и наоборот.

Строим почтовую систему(postfix, dovecot, postfixadmin) – часть третья, установка dovecot

Взято с: http://www.hilik.org.ua 
Апр 20 2009
 После того, как установлены PostfixAdmin (Строим почтовую систему(postfix, dovecot, postfixadmin) – часть первая, установка PostfixAdmin) и Postfix (Строим почтовую систему(postfix, dovecot, postfixadmin) – часть вторая, установка Postfix) можно начинать финальную часть, установку dovecot.
Теперь перейдем к установке dovecot из портов:
cd /usr/ports/mail/dovecot
make install clean

В начале диалог настройки сборки dovecot:
┌────────────────────────────────────────────────────────────────────┐                                   
│                    Options for dovecot 1.1.11                      │                                   
│ ┌────────────────────────────────────────────────────────────────┐ │                                   
│ │              [X] KQUEUE       kqueue(2) support                │ │                                   
│ │              [X] SSL          SSL support                      │ │                                   
│ │              [ ] IPV6         IPv6 support                     │ │                                   
│ │              [X] POP3         POP3 support                     │ │                                   
│ │              [X] LDA          LDA support                      │ │                                   
│ │              [ ] MANAGESIEVE  ManageSieve support              │ │                                   
│ │              [ ] GSSAPI       GSSAPI support                   │ │                                   
│ │              [ ] VPOPMAIL     VPopMail support                 │ │                                   
│ │              [ ] BDB          BerkleyDB support                │ │                                   
│ │              [ ] LDAP         OpenLDAP support                 │ │                                   
│ │              [ ] PGSQL        PostgreSQL support               │ │                                   
│ │              [X] MYSQL        MySQL support                    │ │                                   
│ │              [ ] SQLITE       SQLite support                   │ │                                   
├─└────────────────────────────────────────────────────────────────┘─┤                                   
│                       [  OK  ]       Cancel                        │                                   
└────────────────────────────────────────────────────────────────────┘
По окончании сборки перейдем к настройке dovecot, основной файл настройки /usr/local/etc/dovecot.conf:
#Директория для работы Dovecot
base_dir = /var/run/dovecot
#Протоколы по которым будет работать Dovecot
protocols = imap pop3 
#Разрешаем plain text авторизацию
disable_plaintext_auth = no
#Месторасположение пользовательской почты %d - имя домена, %u - емайл пользователя
mail_location = maildir:/usr/mail/%d/%u/
mail_privileged_group = mail
dotlock_use_excl = yes
verbose_proctitle = yes
first_valid_gid = 65534
maildir_copy_with_hardlinks = yes
ssl_disable = yes
#Описание работы IMAP и POP3 протоколов
protocol imap {
  login_greeting_capability = yes
  imap_client_workarounds = delay-newmail netscape-eoh tb-extra-mailbox-sep
}
protocol pop3 {
  pop3_uidl_format = %08Xu%08Xv
  pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
}
#Доставщик клиентской почты
protocol lda {
  postmaster_address = hilik@hilik.org.ua
  sendmail_path = /usr/sbin/sendmail
}
 
#Секция отвечающая за авторизацию пользователей
auth_username_format = %Lu
auth default {
  mechanisms = plain login
#Авторизация через MySQL
  passdb sql {
    args = /usr/local/etc/dovecot-sql.conf
  }
 
  userdb sql {
    args = /usr/local/etc/dovecot-sql.conf
}
#Пользователь от имени которого dovecot выполняет действия с почтой
  user = nobody
  socket listen {
    master {
      path = /var/run/dovecot/auth-master
      mode = 0666
    }
    client {
#Эти настройки отвечают за авторизацию клиентов, в нашей ситуации клиентом выступает Postfix
#когда отвечает на SMTP AUTH
      path = /var/spool/postfix/private/auth
      mode = 0660
      user = postfix
      group = postfix
    }
  }
}
 
dict {
 
}
 
plugin {
 
}
и файл настроек подключения к MySQL /usr/local/etc/dovecot-sql.conf:
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=postfix-777
default_pass_scheme = MD5-CRYPT
password_query = SELECT password FROM mailbox WHERE username = '%u'
user_query = SELECT maildir, 65534 AS uid, 65534 AS gid FROM mailbox WHERE username = '%u'
Теперь остается разрешить старт dovecot:
echo "dovecot_enable=YES" >> /etc/rc.conf
и запустить его:
/usr/local/etc/rc.d/dovecot start
На этом настройка почтовой системы окончена. Можно наслаждаться простотой управления и стабильностью работы системы.

Строим почтовую систему(postfix, dovecot, postfixadmin) – часть вторая, установка Postfix

Взято с: http://www.hilik.org.ua
Апр 20 2009
 Переходим к установке postfix. Всю подготовительную часть (создание баз авторизации, настройка PostfixAdmin) мы провели в первой части статьи Строим почтовую систему(postfix, dovecot, postfixadmin) – часть первая, установка PostfixAdmin и теперь начинаем разбираться непосредственно с Postfix.
Установим postfix конечно же из портов:
cd /usr/ports/mail/postfix/
make install clean
В диалоге настройки опций сборки Postfix нужно выбрать такие пункты:
┌────────────────────────────────────────────────────────────────────┐
│                   Options for postfix 2.5.6,1                      │
│ ┌────────────────────────────────────────────────────────────────┐ │
│ │[X] PCRE      Perl Compatible Regular Expressions               │ │
│ │[ ] SASL2     Cyrus SASLv2 (Simple Auth. and Sec. Layer)        │ │
│ │[X] DOVECOT   Dovecot SASL authentication method                │ │
│ │[ ] SASLKRB   If your SASL req. Kerberos select this option     │ │
│ │[ ] SASLKRB5  If your SASL req. Kerberos5 select this option    │ │
│ │[ ] SASLKMIT  If your SASL req. MIT Kerberos5 select this option│ │
│ │[ ] TLS       Enable SSL and TLS support                        │ │
│ │[ ] BDB       Berkeley DB (choose version with WITH_BDB_VER)    │ │
│ │[X] MYSQL     MySQL maps (choose version with WITH_MYSQL_VER)   │ │
│ │[ ] PGSQL     PostgreSQL maps (choose with DEFAULT_PGSQL_VER)   │ │
│ │[ ] OPENLDAP  OpenLDAP maps (choose ver. with WITH_OPENLDAP_VER)│ │
│ │[ ] CDB       CDB maps lookups                                  │ │
│ │[ ] NIS       NIS maps lookups                                  │ │
│ │[ ] VDA       VDA (Virtual Delivery Agent)                      │ │
│ │[ ] TEST      SMTP/LMTP test server and generator               │ │
├─└────────────────────────────────────────────────────────────────┘─┤
│                       [  OK  ]       Cancel                        │
└────────────────────────────────────────────────────────────────────┘

Мы включили настройки, для авторизации SMTP через dovecot и возможность проверять наличие пользователей, алиасы, домены и тп в базе MySQL.
Теперь сделаем такой файл настроек posfix main.cf:
queue_directory = /var/spool/postfix
command_directory = /usr/local/sbin
daemon_directory = /usr/local/libexec/postfix
data_directory = /var/db/postfix
mail_owner = postfix
myhostname = mail.hilik.org.ua
mydomain = hilik.org.ua
myorigin = $myhostname
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost
relay_domains = 
local_recipient_maps = unix:passwd.byname $alias_maps
unknown_local_recipient_reject_code = 550
mynetworks_style = host
mynetworks = 127.0.0.0/8 192.168.1.0/24
alias_maps = hash:/usr/local/etc/postfix/aliases
alias_database = hash:/usr/local/etc/postfix/aliases
smtpd_banner = $myhostname ESMTP $mail_name
debug_peer_level = 2
debugger_command =
         PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
         ddd $daemon_directory/$process_name $process_id & sleep 5
sendmail_path = /usr/local/sbin/sendmail
newaliases_path = /usr/local/bin/newaliases
mailq_path = /usr/local/bin/mailq
setgid_group = maildrop
html_directory = no
manpage_directory = /usr/local/man
sample_directory = /usr/local/etc/postfix
readme_directory = no
#Корневая директория для клиентских почтовых ящиков
virtual_mailbox_base = /usr/mail/
#Путь к файлу настроек подключения к MySQL для получения виртуальных алиасов
virtual_alias_maps = proxy:mysql:/usr/local/etc/postfix/mysql_virtual_alias_maps.cf
#Путь к файлу настроек подключения к MySQL для получения виртуальных доменов
virtual_mailbox_domains = proxy:mysql:/usr/local/etc/postfix/mysql_virtual_domains_maps.cf
#Путь к файлу настроек подключения к MySQL для получения виртуальных пользователей
virtual_mailbox_maps = proxy:mysql:/usr/local/etc/postfix/mysql_virtual_mailbox_maps.cf
#Работать dovecot будет от nobody
virtual_minimum_uid             = 65534
virtual_uid_maps                = static:65534
virtual_gid_maps                = static:65534
#Для доставки в локальные почтовые ящики будем использовать доставщик dovecота
virtual_transport               = dovecot
dovecot_destination_recipient_limit = 1
#Включаем smtp авторизацию через dovecot
smtpd_sasl_auth_enable = yes
smtpd_sasl_exceptions_networks = $mynetworks
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
#Устанавливаем разрешения smtpd
smtpd_recipient_restrictions =
#локальная сеть 
        permit_mynetworks 
#smtp авторизация
        permit_sasl_authenticated
#всем остальным релай запрещаем 
        reject_unauth_destination
Файл /usr/local/etc/postfix/mysql_virtual_alias_maps.cf:
#Имя пользователя для подключения к базе MySQL
user = postfix
#Пароль подключения к MySQL
password = postfixpass
#Адрес сервера MySQL
hosts = localhost
#Имя базы MySQL
dbname = postfix
#Запрос на получения адреса aliasа
query           = SELECT goto FROM alias WHERE address='%s' AND active = '1'
Файл настройки получения для получения виртуальных доменов /usr/local/etc/postfix/mysql_virtual_domains_maps.cf:
user = postfix
password = postfixpass
hosts = localhost
dbname = postfix
#Запрос на получение списка виртуальных доменов
query          = SELECT domain FROM domain WHERE domain='%u'
И последний файл который отвечает за проверку наличия получателя /usr/local/etc/postfix/mysql_virtual_mailbox_maps.cf:
user = postfix
password = postfixpass
hosts = localhost
dbname = postfix
#Запрос отвечающий за получение информации о виртуальном пользователе
query           = SELECT CONCAT(domain,'/',maildir) FROM mailbox WHERE username='%s' AND active = '1'
И остается добавить в master.cf dovecot транспорт:
dovecot unix - n n - - pipe flags=DRhu user=nobody:nobody argv=/usr/local/libexec/dovecot/deliver -d ${recipient}
На этом настройка postfix закончена.
Добавим разрешение на запуск postfix:
echo "postfix_enable=YES" >>/etc/rc.conf
И запустим postfix:
/usr/local/etc/postfix start
 
Комментарий читателя:  
    
By Xerks, 08.05.2009 @ 07:39
Вот тут какой-то косячок образовался: Добавим разрешение на запуск postfix: >echo «postfix_enable=NO» >>/etc/rc.conf Наверное, стоит все же поставить «=YES»
By hilik, 08.05.2009 @ 10:09
Точно. Большое спасибо.
 
Финальная часть: Строим почтовую систему(postfix, dovecot, postfixadmin) – часть третья, установка dovecot

Строим почтовую систему(postfix, dovecot, postfixadmin) – часть первая, установка PostfixAdmin

Взято с: http://www.hilik.org.ua
Апр 20 2009
Создать легкую, быструю, да и еще и легко управляемую почтовую систему, это почти недосягаемый идеал. Это все потому, что легко управляемые и удобные средства, как правило потребляют запредельные ресурсы.
Вариант с MySQL, как хранилище авторизационных данных, является наименьшим из зол, поскольку простые селекты он отрабатывает очень быстро, так что для простой сети этого вполне хватит. И панель управления postfixadmin проста и удобна в использовании.
По итогу, что бы построить почту нам нужны установленный Apache c PHP, MySQL, и соответственно настроенный ДНС, который указывает MX-сы для нашего домена на тот сервер, где вы будете строить почтовую систему.

Настройку начнем с того, что установим PostfixAdmin, установим его из портов:
cd /usr/ports/mail/postfixadmin/
make install clean
В начале небольшой конфигурационный диалог:
┌────────────────────────────────────────────────────────────────────┐
│                 Options for postfixadmin 2.2.1.1                   │
│ ┌────────────────────────────────────────────────────────────────┐ │
│ │   [X] MYSQL   MySQL back-end (use mysql PHP extension)         │ │
│ │   [ ] MYSQLI  MySQL 4.1+ back-end (use mysqli PHP extension)   │ │
│ │   [ ] PGSQL   PostgreSQL back-end (use pgsql PHP extension)    │ │
├─└────────────────────────────────────────────────────────────────┘─┤
│                       [  OK  ]       Cancel                        │
└────────────────────────────────────────────────────────────────────┘
После того, как установка закончится, первым делом нужно настроить виртуальный домен апача, что бы получить доступ к панели управления PostfixAdmin. К примеру так:
<VirtualHost *:80>
    ServerAdmin postmaster@hilik.org.ua
    DocumentRoot /usr/local/www/postfixadmin
    ServerName postmaster.hilik.org.ua
    <Directory /usr/local/www/postfixadmin>
                  AllowOverride All
    Directory>
VirtualHost>
Далее нужно создать базу и пользователя MySQL:
mysql -uroot -p
create database postfix;
grant all on postfix.* to 'postfix'@'localhost' identified by 'postfixpass';
Теперь нужно изменить файл настроек postfixadmin /usr/local/www/postfixadmin/config.inc.php.
Изменим
$CONF['configured'] = false;
на
$CONF['configured'] = true;
Эта установка означает, что мы создали базы и пользователя MySQL.
Укажем URL на котором будет отвечать наш постфиксадмин:
$CONF['postfix_admin_url'] = 'http://postmaster.hilik.org.ua';
Далее в этом же файле установим языком по умолчанию русский:
$CONF['default_language'] = 'ru';
И установим параметры подключения к базе MySQL:
$CONF['database_type'] = 'mysql';
$CONF['database_host'] = '127.0.0.1';
$CONF['database_user'] = 'postfix';
$CONF['database_password'] = 'postfixpass';
$CONF['database_name'] = 'postfix';
$CONF['database_prefix'] = '';
И можно открывать в браузере установку:
http://postmaster.hilik.org.ua/setup.php
Там вы увидите примерно такое:
Postfix Admin Setup Checker
 
Running software:
 
    * PHP version 5.2.9
    * Apache/1.3.41 (Unix) PHP/5.2.9 with Suhosin-Patch
 
Checking for dependencies:
 
    * Warning: Magic Quotes: ON (internal workaround used)
    * Depends on: presence config.inc.php - OK
    * Checking $CONF['configured'] - OK
    * Depends on: MySQL 3.23, 4.0 - OK
    * Depends on: MySQL 4.1 - OK (change the database_type to 'mysqli' in config.inc.php!!)
    * Testing database connection - OK - mysql://postfix:xxxxx@127.0.0.1/postfix
    * Depends on: session - OK
    * Depends on: pcre - OK
    * Depends on: multibyte string - OK
    * Depends on: IMAP functions - OK
 
Everything seems fine... attempting to create/update database structure
 
Updating database:
 
old version: 0; target version: 397
 
updating to version 1 (all databases)...upgrade_1   done
 
updating to version 1 (MySQL)...   done
 
updating to version 2 (MySQL)...   done
 
updating to version 3 (MySQL)...   done
 
updating to version 4 (MySQL)...   done
 
updating to version 5 (MySQL)...   done
 
updating to version 79 (MySQL)...   done
 
updating to version 81 (MySQL)...   done
 
updating to version 90 (all databases)...   done
 
updating to version 169 (MySQL)...   done
 
updating to version 318 (MySQL)...   done
 
updating to version 344 (MySQL)...   done
 
updating to version 373 (MySQL)...   done
В самом низу находится диалог создания главного админа системы управления:
admin1
и на этом настройка PostfixAdmin закончена
Следом за этим, нужно удалить setup.php:
rm /usr/local/www/postfixadmin/setup.php
И можно войти непосредственно в систему управления:
enter
и далее создадим домен и пользователя в нем. Что бы было на чем проверять настройки постфикс и dovecot.
При использовании PostfixAdmin вы можете столкнуться с такой ошибкой:
Invalid query: Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (cp1251_general_ci,IMPLICIT) for operation '='
Я решил эту проблему путем изменения настроек полей таблиц базы postfix, сделал это я для каждого поля text и varchar. В общем для каждого поля выполнял такие команды:
alter table fetchmail change src_user src_user varchar(255) character set latin1 NOT NULL default '';
то есть поменял character set по умолчанию.
Создадим домен, для этого перейдем в меню «Список доменов» подменю «Новый домен», выбрав этот пункт, появится диалог добавления домена:
domain-add
пункт «Почтовый сервер является резервным MX», означает, что почтовый сервер будет работать только на пересылку почты для этого домена. не доставляя почту в локальные почтовые ящики.
Создадим пользователя, для этого в меню «Обзор» выберем подменю «Создать Ящик»:
add-user
Теперь, когда мы добавили пользователя и домен, можно наконец то переходить к установке и настройке Postfix.
Об этом мы поговорим во второй части нашей статьи Строим почтовую систему(postfix, dovecot, postfixadmin) – часть вторая, установка Postfix