uname -a
FreeBSD guyu.local 8.2-RELEASE FreeBSD 8.2-RELEASE #4: Wed Mar 7 12:30:22 MAGT 2012 root@guyu.local:/usr/obj/usr/src/sys/MYGATE amd64
это система на которой все происходит.
Задача: Поднять маил сервер. Пользователи не должны быть системными.
Все скопипизженно с http://www.lissyara.su/
Короче пытаемся воткнуть EXIM c DOVECOT ну и чтобы юзверями рулить postfixadmin.
Уважаемый lissyara советует воткнуть postfixadmin для начала
Пытаемся
whereis postfixadmin
postfixadmin: /usr/ports/mail/postfixadmin
cd /usr/ports/mail/postfixadmin
make && make install && make clean
Галочка на MySQL стоит жмём ок(у меня клиент 5.5.21)
Для PHP5 надо галочку поставить на Build Apache module остальное по умолчанию.
У апача тоже надо выбрать MySQL (хотя можно вроде и без него)
Если будет бухтеть на libtool надо будет поставить свежий порт.
Возможно, бухтеть будет еще на что-нить.
После этого ставим MYSQL надо той же версии что и клиент.
cd /usr/ports/databases/mysql55-server
make && make install && make clean
Теперь надо запустить то что установили.
чтобы сервисы стартовали при загрузки фряхи.
echo 'apache22_enable="YES"' >> /etc/rc.conf && echo 'mysql_enable="YES"' >> /etc/rc.conf
ну и руками стартануть
/usr/local/etc/rc.d/mysql-server start
Starting mysql.
/usr/local/etc/rc.d/apache22 onestart
Performing sanity check on apache22 configuration:
Syntax OK
Starting apache22.
Теперь надо поставить PHPMyAdmin он поможет управлять базой SQL(руками гемерно это делать)
cd /usr/ports/databases/phpmyadmin
make && make install && make clean
тут вроде проблем не возникает.
Далее надо воткнуть в httpd.conf
вот это :
Alias /phpmyadmin/ "/usr/local/www/phpMyAdmin/"
<Directory "/usr/local/www/phpMyAdmin/">
Options none
AllowOverride Limit
Order Deny,Allow
Deny from all
Allow from 127.0.0.1 .example.com
</Directory>
чтобы апач знал где наш ПМА лежит
exemple.com меняем на необходимый адресс
Теперь подрехтуем конфиг апача, чтобы он PHP понимал.
открываем httpd.conf
ee /usr/local/etc/apache22/httpd.conf
Находим
#AddType text/html .shtml
#AddOutputFilter INCLUDES .shtml
</IfModule>
приводим к виду
#AddType text/html .shtml
#AddOutputFilter INCLUDES .shtml
AddType application/x-httpd-php .php
AddType application/x-httpd-sourse .phps
</IfModule>
Находим
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
делаем
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
рестартим апач
apachectl restart
Теперь идем по адресу
Должен запуститься ПМА, но там нехера не работает, потому что нехера не настроено.
Вообще-то сейчас можно подключиться к скул серверу, но ПМА не дает доступ без пароля.
Вообще-то сейчас можно подключиться к скул серверу, но ПМА не дает доступ без пароля.
Да и вообще не дело root с пустым паролям даже на SQL-сервере.
Идем и меняем пароль.(вообще-то устанавливаем потому-что пароль, не пустой, а его вообще нет.Существенная разница, не ясная на первый взгляд.)
Заходим в MYSQL
mysql -u root -p
Enter password:(просто жмем энтер)
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.5.21 Source distribution
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>(если все это видим мы удачно вошли)
mysql> SET PASSWORD FOR ‘root’@'localhost’ = PASSWORD(‘newpassword’);Вместо newpassword пишем свой новый пароль.
Query OK, 0 rows affected (0.02 sec)(типо все нормально прошло пишем exit и заходим снова с новым паролем, проверяем)
теперь идем в ПМА с новым паролем должны зайти.
если внизу страницы есть такое сообщение
Дополнительные возможности phpMyAdmin не настроены в полной мере, некоторые функции были отключены. Для определения причины нажмите ТУТ
просят так нажмите, и строго следуйте инструкциям когда все заработает возвращаемся сюда.
Далее, придерживаясь курса заданным Великим Лениным, тьфу то есть, как нам советует lissyara:
Создадим новую базу- базы данных / в поле новая база пишем её имя (exim)/ жмём кнопочку создать.
Кликаем на неё / В верху у нас отобразиться её имя / теперь жмём SQL.Открылось окно запросов к нашей базе данных.
Теперь надо запихать следующие запросы в БД.
USE mysql;
INSERT INTO `user` (`Host`, `User`, `Password`)
VALUES ('localhost','exim',password('youpass'));
INSERT INTO `db` (`Host`, `Db`, `User`, `Select_priv`)
VALUES ('localhost','exim','exim','Y');
FLUSH PRIVILEGES;
GRANT USAGE ON exim.* TO exim@localhost;
GRANT SELECT, INSERT, DELETE, UPDATE ON exim.* TO exim@localhost;
USE `exim`;
youpass заменить на свой пароль
CREATE TABLE `admin` (
`username` varchar(255) NOT NULL default '',
`password` varchar(255) NOT NULL default '',
`created` datetime NOT NULL default '0000-00-00 00:00:00',
`modified` datetime NOT NULL default '0000-00-00 00:00:00',
`active` tinyint(1) NOT NULL default '1',
PRIMARY KEY (`username`),
KEY `username` (`username`)
) TYPE=MyISAM COMMENT='Exim and dovecot Admin - Virtual Admins';
(тут да и в других запросах TYPE надо заменить на ENGINE иначе ошибку выдает)
CREATE TABLE `domain` (
`domain` varchar(255) NOT NULL default '',
`description` varchar(255) NOT NULL default '',
`aliases` int(10) NOT NULL default '0',
`mailboxes` int(10) NOT NULL default '0',
`maxquota` int(10) NOT NULL default '0',
`transport` varchar(255) default NULL,
`backupmx` tinyint(1) NOT NULL default '0',
`created` datetime NOT NULL default '0000-00-00 00:00:00',
`modified` datetime NOT NULL default '0000-00-00 00:00:00',
`active` tinyint(1) NOT NULL default '1',
PRIMARY KEY (`domain`),
KEY `domain` (`domain`)
) TYPE=MyISAM COMMENT='Exim and dovecot Admin - Virtual Domains';
CREATE TABLE `domain_admins` (
`username` varchar(255) NOT NULL default '',
`domain` varchar(255) NOT NULL default '',
`created` datetime NOT NULL default '0000-00-00 00:00:00',
`active` tinyint(1) NOT NULL default '1',
KEY `username` (`username`)
) TYPE=MyISAM COMMENT='Exim and dovecot Admin - Domain Admins';
CREATE TABLE `log` (
`timestamp` datetime NOT NULL default '0000-00-00 00:00:00',
`username` varchar(255) NOT NULL default '',
`domain` varchar(255) NOT NULL default '',
`action` varchar(255) NOT NULL default '',
`data` varchar(255) NOT NULL default '',
KEY `timestamp` (`timestamp`)
) TYPE=MyISAM COMMENT='Exim and dovecot Admin - Log';
CREATE TABLE `mailbox` (
`username` varchar(255) NOT NULL default '',
`password` varchar(255) NOT NULL default '',
`name` varchar(255) NOT NULL default '',
`maildir` varchar(255) NOT NULL default '',
`quota` int(10) NOT NULL default '0',
`domain` varchar(255) NOT NULL default '',
`created` datetime NOT NULL default '0000-00-00 00:00:00',
`modified` datetime NOT NULL default '0000-00-00 00:00:00',
`active` tinyint(1) NOT NULL default '1',
PRIMARY KEY (`username`),
KEY `username` (`username`)
) TYPE=MyISAM COMMENT='Exim and dovecot Admin - Virtual Mailboxes';
CREATE TABLE `vacation` (
`email` varchar(255) NOT NULL default '',
`subject` varchar(255) NOT NULL default '',
`body` text NOT NULL,
`cache` text NOT NULL,
`domain` varchar(255) NOT NULL default '',
`created` datetime NOT NULL default '0000-00-00 00:00:00',
`active` tinyint(1) NOT NULL default '1',
PRIMARY KEY (`email`),
KEY `email` (`email`)
) TYPE=MyISAM COMMENT='Exim and dovecot Admin - Virtual Vacation';
вроде пока все. Втыкаем dovecot
cd /usr/ports/mail/dovecot
make && make install && make clean
MySQL support не забыть воткнуть в настройках довеКота
Конфижим довекот перевод конфига в статье Лисяры.Тут только то, что менял
cd /usr/local/etc
ee dovecot.conf
base_dir = /var/run/dovecot/
protocols = imap pop3
listen = *
shutdown_clients = yes
syslog_facility = mail
login_dir = /var/run/dovecot/login
login_user = dovecot
login_process_size = 64
login_process_per_connection = yes
login_processes_count = 3
login_max_processes_count = 64
login_max_connections = 128
login_trusted_networks = 127.0.0.1
login_log_format_elements = user=<%u> method=%m rip=%r lip=%l %c
login_log_format = %$: %s
mail_location = maildir:/var/mail/%d/%u@%d(проверить как работает подогнано под postfixadmin)
не все но в основном достаточно.
надо теперь задать конфиг для sql подключения.
cp /usr/local/share/examples/dovecot/dovecot-sql.conf /usr/local/etc/dovecot-sql.conf
ee /usr/local/etc/dovecot-sql.conf
в нём примерно так.
driver = mysql
connect = host=localhost dbname=exim user=exim password=exim
default_pass_scheme = MD5
тут вообще жопа какаято может быть причиной ошибки при авторизацииpassword_query = SELECT `username` as `user`, `password` FROM \ `mailbox` WHERE `username` = '%n@%d' AND `active`='1'
user_query = SELECT `maildir` AS `home`, 26 AS `uid`, 26 AS `gid` \
FROM `mailbox` WHERE `username` = '%n@%d' AND `active`='1'
таже жопа :)
теперь добавляем в РЦecho 'dovecot_enable="YES"' >> /etc/rc.conf
ну и пробуем запустить
/usr/local/etc/rc.d/dovecot start
нихуя халявы не будет ругается на SSL я пока неготов к таким серьёзным отношениям вырубим его нафиг /usr/local/etc/dovecot.conf ssl=no
теперь должен колбаситься.
Starting dovecot. If you have trouble with authentication failures, enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork This message goes away after the first successful login.
прикольное сообщние не дай бог пригодиться.
забыл добавить в постфиксадмин в апач
ee /usr/local/etc/apache22/Includes/postfixadmin.conf
туда пихаем
Alias /postfixadmin/ "/usr/local/www/postfixadmin/"
<Directory "/usr/local/www/postfixadmin/">
Options Indexes
AllowOverride AuthConfig
Order allow,deny
Allow from all
</Directory>
apachectl configtest
apachectl graceful
жмем на страничке setup
правим конфиг как он просит.заодно пропишете базу скула и пользователей.
обновляем
заполняем поля 4 штуки.второе поле е-маил адрес.
будет ругаться в конфиге измените переменную $CONF['setup_password'] на тот хеш который он напишет это ваш пароль но в MD5 помойму.
правим /etc/make.conf
.if ${.CURDIR} == ${PORTSDIR}/mail/exim
WITH_MYSQL= yes
LOG_FILE_PATH?= syslog
WITH_CONTENT_SCAN= yes
WITH_DEFAULT_CHARSET?= koi8-r
WITHOUT_IPV6= yes
.endif
зачем надо не понял.
cd /usr/ports/mail/exim/
make && make install && make clean
echo 'exim_enable="YES" ' >> /etc/rc.conf
echo '
sendmail_enable="NONE"
' >> /etc/rc.conf
ee /etc/mail/mailer.conf
делаем так
sendmail /usr/local/sbin/exim
send-mail /usr/local/sbin/exim
mailq /usr/local/sbin/exim -bp
newaliases /usr/local/sbin/exim -bi
hoststat /usr/local/sbin/exim
purgestat /usr/local/sbin/exim
теперь настраиваем exim
просто спизженный конфиг с выше упомянутой статьи.
ee /usr/local/etc/exim/configure
|
курить конфиг до просветвления, у меня это самое просветвление так и не наступило.
не смог весь осилить очень большой надо будет вернуться сюда
втыкнём антивирь и попробуем заколбасить.
как узнать uid gid команда id [имя_пользователя]
еще есть проблемма с запросом для получения домашней директории пользователя
относительные пути не поддерживаются поэтому надо сделать что-то вроде этого
SELECT CONCAT('/var/mail/exim/',maildir) AS home , 26 AS uid , 6 AS gid FROM mailbox WHERE username = '%u@%n' AND active = '1'
Может возникнуть следующая проблема.
Dovecot может отвалиться при вызове доставщика (delivery)
Проблема все в тех-же uid и gid и правами доступа на папки.В логах пишется в какой папке косяк.
не смог весь осилить очень большой надо будет вернуться сюда
втыкнём антивирь и попробуем заколбасить.
cd /usr/ports/security/clamav
make install && make clean
freshclam
Да еще неплохо обновление антивира поставить пону смотрим, курим конфиги вылавливаем ощибки
первая ошибка это ругань на несоответствие названия машины днс имени.Вас ждут увлекательные проблемы с пользователями и надо будет менять всякие uid и gid
как узнать uid gid команда id [имя_пользователя]
еще есть проблемма с запросом для получения домашней директории пользователя
относительные пути не поддерживаются поэтому надо сделать что-то вроде этого
SELECT CONCAT('/var/mail/exim/',maildir) AS home , 26 AS uid , 6 AS gid FROM mailbox WHERE username = '%u@%n' AND active = '1'
Может возникнуть следующая проблема.
Dovecot может отвалиться при вызове доставщика (delivery)
Проблема все в тех-же uid и gid и правами доступа на папки.В логах пишется в какой папке косяк.