Ключевые слова:postfix, mail, imap, mysql, sasl, auth, (найти похожие документы)
From: Lubimez
Newsgroups: admin at lubimez.tomsk.ru
Date: Mon, 8 Sep 2004 14:31:37 +0000 (UTC)
Subject: Настройка Postfix и Cyrus-Imap с хранением базы пользователей в MySQL
Оригинал: http://lubimez.tomsk.ru/postfix/
Установка mysql-server version 4.0.18 (можно версии ниже.. )
cd /usr/posts/databases/mysql40-server/
make install clean
создать базу mail
create database mail;
use mail;
Таблица алиасов
CREATE TABLE aliases (
email varchar(128) NOT NULL default '',
alias varchar(128) NOT NULL default '',
listid int(10) unsigned NOT NULL default '0',
info varchar(150) NOT NULL default ''
) TYPE=MyISAM;
Список
CREATE TABLE lists (
listid int(10) unsigned NOT NULL auto_increment,
name varchar(50) NOT NULL default '',
info varchar(150) NOT NULL default '',
PRIMARY KEY (listid)
) TYPE=MyISAM;
Таблица с учетными записями
CREATE TABLE users (
email varchar(128) NOT NULL default '',
passwd varchar(128) NOT NULL default '',
enabled tinyint(4) NOT NULL default '1',
name varchar(150) default NULL,
info varchar(150) default NULL,
PRIMARY KEY (email)
) TYPE=MyISAM;
Предоставляем права для юзера mail
grant select,insert,update,delete,create,drop on mail.* to mail@localhost identified by 'mail';
далее ставим cyrus-imapd2
cd /usr/ports/mail/cyrus-imapd2
делай патч
make patch
далее заходим в каталог /usr/ports/mail/cyrus-imapd2/work/cyrus_версия_х_х_/imap
открываем файл message.c
ee message.c
ищем 'Х' для этого жмем ctrl-y и набираем в строке поиска 'X'
меняем
if (inheader && *p >= 0x80) {
на
if (0 && inheader && *p >= 0x80) {
таким же образом меняем в файле lmtpengine.c
if (c >= 0x80) {
на
if (0 && c >= 0x80) {
далее устанавливаем cyrus-imapd2 /usr/ports/mail/cyrus-imapd2
make install clean
устанавливаем cyrus-sasl2
cd /usr/ports/security/cyrus-sasl2
собираем для работы с мускулом (с флагом with_mysql=yes)
make FORCE_PKG_REGISTER=yes WITH_MYSQL=yes
инсталируем
make install
или
make WITH_MYSQL=YES FORCE_PKG_REGISTER=YES install clean
ну и на конец самое основное - ставим postfix
cd /usr/ports/mail/postfix
make install clean
выбрать sasl2 и mysql
на все вопросы отвечаем y (при добавлении в mailer.conf и др.)
а теперь приступим к самому главному-- НАСТРОЙКЕ
идемс в /usr/local/etc/postfix (или куда вы тама ставили при
конфигурировании)
открываем файл main.cf и... удаляем тама все.-)))
пишем туда ниже следующее (пишете все точно. даже пробелы в начале
строки, где указано)
queue_directory = /var/spool/postfix
command_directory = /usr/local/sbin
daemon_directory = /usr/local/libexec/postfix
mail_owner = postfix
myhostname = ваш домен
mydestination = localhost, $myhostname,
localhost.$mydomain, $config_directory/mydestination
unknown_local_recipient_reject_code = 550
mynetworks_style = subnet
mynetworks = 127.0.0.0/8, 192.168.1.0/24
alias_maps = hash:/etc/mail/aliases
mysql:/usr/local/etc/postfix/mysql-aliases.cf
alias_database = hash:/etc/mail/aliases
mailbox_transport = cyrus
fallback_transport =
smtpd_banner = $myhostname Postfix rules!
debug_peer_level = 2
debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
xxgdb $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
manpage_directory = /usr/local/man
sample_directory = /usr/local/etc/postfix
readme_directory = no
allow_mail_to_commands = alias
# max
message_size_limit = 10240000
bounce_size_limit = 65536
header_size_limit = 32768
allow_untrusted_routing = no
local_recipient_maps = $alias_maps
mysql:/usr/local/etc/postfix/mysql-local.cf
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain =
smtpd_sasl_tls_security_options = $smtpd_sasl_security_options
smtpd_recipient_restrictions = permit_mynetworks,
hash:/etc/mail/access,
permit_sasl_authenticated,
permit_auth_destination,
reject_unauth_destination
smtpd_client_restrictions = permit_mynetworks
relayhost = тут пишем релэи-)) если нету внешнего инета
далее создадим файл mysql-local.cf в той же директории и пишем там
user = mail (юзер которому вы предоставляли право на базу)
password = mail (пароль)
dbname = mail (если вы создавали другую пишите её)
table = users
select_field = email
where_field = email
additional_conditions = and enabled = 1
hosts = localhost (если на другой тачке стоит, то пишем её)
таким же образом создадим файл mysql-aliases.conf и пишем
user = mail (юзер которому вы предоставляли право на базу)
password = mail (пароль)
dbname = mail (если вы создавали другую пишите её)
table = aliases ( таблица)
select_field = alias
where_field = email
hosts = localhost (если на другой тачке стоит, то пишем её)
в файле master.cf проверить запись cyrus, одна должна быть такой
cyrus unix - n n - - pipe
user=cyrus argv=/usr/local/cyrus/bin/deliver -e -r ${sender} -m
${extension} ${user}
создаем файл /usr/local/etc/imapd.conf и пишем в нем следующее
# чтоб не различал регистр почтового ящика
lmtp_downcase_rcpt: 1
# чтоб врга брутфорсом не перебрал
plaintextloginpause: 2
# чтоб не тусились в очереди письма для аккаунта с превышенной квотой
lmtp_overquota_perm_failure: yes
# Директория с конфигурацией
configdirectory: /var/imap
partition-default: /var/spool/imap
quotawarn: 95
# Суперпользователь для IMAP-а
admins: cyrus
# Автоматически давать права админу на созданный аккаунт
defaultacl: cyrus lrswipcda
# Стандартная квота ~10 мег
autocreatequota: 10000
logtimestamps: yes
# по идее совсем не нужно
reject8bit: no
postmaster: postmaster
# MySQL
sasl_pwcheck_method: auxprop
sasl_auxprop_plugin: sql
sasl_sql_engine: mysql
sasl_mech_list: plain login cram-md5 digest-md5
sasl_sql_user: mail (юзер которому вы предоставляли право на базу)
sasl_sql_passwd: mail (пароль)
sasl_sql_database: mail (если вы создавали другую пишите её)
sasl_sql_hostnames: localhost
sasl_sql_select: SELECT passwd FROM users WHERE email = LOWER('%u') AND enabled = 1
sasl_log_level: 255
содаем файл /usr/local/etc/cyrus.conf и пишем в нем
START {
recover cmd="ctl_cyrusdb -r"
}
SERVICES {
imap cmd="imapd" listen="imap" prefork=0
# imaps cmd="imapd -s" listen="imaps" prefork=0 (по не обходимости можно включить)
pop3 cmd="pop3d" listen="pop3" prefork=0
# pop3s cmd="pop3d -s" listen="pop3s" prefork=0
# sieve cmd="timsieved" listen="sieve" prefork=0
lmtpunix cmd="lmtpd" listen="/var/imap/socket/lmtp" prefork=0
# notify cmd="notifyd" listen="/var/imap/socket/notify" proto="udp"
prefork=1
}
EVENTS {
checkpoint cmd="ctl_cyrusdb -c" period=30
delprune cmd="ctl_deliver -E 3" at=0400
tlsprune cmd="tls_prune" at=0400
}
далее создадим файл touch /usr/local/lib/sasl2/smtpd.conf
и внесем в него следующую информацию
pwcheck_method: auxprop
auxprop_plugin: sql
sql_engine: mysql
mech_list: plain login cram-md5 digest-md5
sql_user: mail (аналогично предыдущему)
sql_passwd: mail (аналогично предыдущему)
sql_database: mail (аналогично предыдущему)
sql_hostnames: localhost (аналогично предыдущему)
sql_select: SELECT passwd FROM users WHERE email = LOWER('%u') AND
enabled=1
выставим права
chown root:mail /usr/local/lib/sasl2/smtpd.conf
chmod 440 /usr/local/lib/sasl2/smtpd.conf
с настройкой конфигов покончено. приступим к настройке учетных записей
и mailbox'ов
сделаем команду /usr/local/cyrus/bin/mkimap
должно быть следующее сообщение
# /usr/local/cyrus/bin/mkimap
reading configure file...
i will configure directory /var/imap.
i saw partition /var/spool/imap.
done
creating /var/imap...
creating /usr/sieve...
creating /var/spool/imap...
done
Выставим права на каталоги
chown -R cyrus:cyrus /var/imap
chown -R cyrus:cyrus /var/spool/imap
добавим в базу mail
пользователя cyrus
insert into users(email,passwd,enabled,name,info)
values('cyrus','пароль',1,'cyrus','cyrus');
Для того что бы добавлять пользователей почты необходимо также
сконфигурить apache+php
причем php нужно конфигурить с socket'ами
web приложение для администрирование mailbox'ов mailadm.tar.gz
файл config.php в архиве
$MYSQLHOST = "localhost"; (настройки аналогичные для коннекта к мускулу выше)
$MYSQLUSER = "mail";
$MYSQLPASS = "mail";
$MYSQLDB = "mail";
$CYRUS_HOST="localhost";
$CYRUS_PORT="143";
$CYRUS_USERNAME="cyrus"; (пользователь которого вы добавили в базу)
$CYRUS_PASSWORD="cyrus"; (пароль)
$SESS_TIMEOUT=600;
$DEFQUOTE=10000;
$DEFNAME='yourdomain.com'; - доменное имя
CopyRight by Lubimez <admin at lubimez.tomsk.ru>
web приложение для администрирование mailbox'ов mailadm.tar.gz
???????????????????? И где оно ? или тама была ссылка ? Если да то битая если это просто говорится что нада качать маил админ то кскажи какой пажалуйста. Я попробовал разные но видать нето что нада
Полная ссылка
http://lubimez.tomsk.ru/postfix/mailadm.tar.gz в связи с тем что на данном сервере иногда не бывает
Внешнего интернета, прошу писать на admin at lubimez.tomsk.ru что бы выслать вам данный архив (web приложение).
А не могли бы по подробнее расказать как потом все протестировать! Как через что авторизоваться!
Вроде telmet localhost 143
мне выводит:
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused
telnet: Unable to connect to remote host: Connection refused
!
Что делать ХЕЛПППП!!!!