Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> статьи —> FreeBSD —> почтовые системы —> Postfix + DBMail

Почтовая система Postfix + DBMail + SASL2 + TLS + DSpam + ClamAV + RoundCubeWebMail

Автор: zheromo.


Готовимся

Имеем свежеустановленную фряху 7.0 AMD64

Обновляем порты
# portsnap fetch extract update

Для удобства поставим mc
# cd /usr/ports/misc/mc
# make install clean

Опции оставил по дефолту.

Устанавливаем MySQL
# cd /usr/ports/databases/mysql51-server
# make install clean

Устанавливаем Apache
# cd /usr/ports/www/apache22
# make install clean

Опции оставил по умолчанию, добавил только MYSQL

Включаем SSL
# cp /usr/local/etc/apache22/extra/httpd-ssl.conf
# /usr/local/etc/apache22/Includes/httpd-ssl.conf

Генерируем сертификат
# cd /usr/local/etc/apache22/
# openssl req -new -x509 -days 3650 -nodes -out server.crt -keyout server.key

Рихтуем rc.conf
# echo 'mysql_enable="YES"' >> /etc/rc.conf
# echo 'apache22_enable="YES"' >> /etc/rc.conf

Перезагружаемся.
# reboot

Меняем пароль рута в MySQL-e
# mysqladmin -u root password '<root_password>'

 
 

Установка DBMail

Устанавливаем DBMail
# cd /usr/ports/mail/dbmail
# make install clean

Выбираем опции MYSQL SIEVE.

Создаем окружение для DBMail-а
# mysql -uroot -p
> CREATE DATABASE dbmail default character set "UTF8";
> GRANT ALL ON dbmail.* to dbmail@localhost identified by '<pass>';
> quit

# mysql -udbmail -p dbmail < /usr/local/share/dbmail/mysql/create_tables.mysql

Правим конфиг DBMaila /usr/local/etc/dbmail.conf

Изменяем строки
driver     = mysql
authdriver = sql
sqlsocket  = /tmp/mysql.sock
pass       = <pass>

Проверяем, что все нормально
# /usr/local/sbin/dbmail-util -a

Правим файл /etc/crontab для запуска административных утилит DBMail-a
Добавляем строки:
10 0 * * * root /usr/local/sbin/dbmail-util -a -y >> /dev/null
10 1 * * * root /usr/local/sbin/dbmail-util -p -y >> /dev/null

Рихтуем /etc/rc.conf
# echo 'dbmail_imapd_enable="YES"' >> /etc/rc.conf
# echo 'dbmail_pop3d_enable="YES"' >> /etc/rc.conf
# echo 'dbmail_lmtpd_enable="YES"' >> /etc/rc.conf

Запускаем службы DBMaila
# /usr/local/etc/rc.d/dbmail-imapd start
# /usr/local/etc/rc.d/dbmail-pop3d start
# /usr/local/etc/rc.d/dbmail-lmtpd start

Смотрим есть ли ошибки
# tail /var/log/dbmail.err

Создадим тестового пользователя:
# dbmail-users -a test -w password
# dbmail-users -c test -s test@mydomain.ru
# dbmail-users -c test -m 10M

 
 
Защитим соединения со службами DBMail-a с помощью stunnel
# cd /usr/ports/security/stunnel/
# make install clean

Выбираем опции по умолчанию

# cd /usr/local/etc/stunnel
# cp stunnel.conf-sample stunnel.conf

Создаем сертификат:
# openssl req -new -x509 -days 3650 -nodes -out mail.pem -keyout mail.pem

Отвечаем на вопросы, в принципе все должно быть понятно

Создаем папки:
# mkdir /var/tmp/stunnel
# touch /var/tmp/stunnel/stunnel.pid
# chown -R stunnel:nogroup /var/tmp/stunnel

Правим конфиг /usr/local/etc/stunnel.conf

Изменяем строку
sslVersion = all

Комментируем секцию [ssmtp]

Запускаем
# /usr/local/etc/rc.d/stunnel start

Рихтуем rc.conf:
# echo 'stunnel_enable="YES"' >> /etc/rc.conf
# echo 'stunnel_pidfile="/var/tmp/stunnel/stunnel.pid"' >> /etc/rc.conf

 
 
Установка Postfix

Устанавливаем Postfix
# cd /usr/ports/mail/postfix
# make install clean

Выбираем опции PCRE SASL2 TLS MYSQL

На вопросы о добавлении пользователя postfix в группу mail и добавлении в mailer.conf отвечаем положительно.

Правим конфиги Postfix-а
В /usr/local/etc/postfix/main.cf изменяем строки:
# INTERNET HOST AND DOMAIN NAMES
myhostname = mx.kscom.ru
mydomain = kscom.ru
# SENDING MAIL
myorigin = $mydomain
# RECEIVING MAIL
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
# TRUST AND RELAY CONTROL
mynetworks_style = subnet
mynetworks = 10.0.0.0/8, 127.0.0.0/8
# SHOW SOFTWARE VERSION OR NOT
smtpd_banner = $myhostname ESMTP $mail_name

 
   
Соединяем DBMail c Postfix-ом:

в /etc/postfix/master.cf добавляем:
dbmail-lmtp     unix    -       -       n       -       -       lmtp -v
  -o disable_dns_lookups=yes

в /usr/local/etc/postfix/main.cf соответственно:
# DELIVERY TO MAILBOX
mailbox_transport = dbmail-lmtp:localhost:24
#mailbox_transport = dbmail-smtp:
#fallback_transport =

#REJECTING MAIL FOR UNKNOWN LOCAL USERS
local_recipient_maps = mysql:/usr/local/etc/postfix/sql-recipients.cf
unknown_local_recipient_reject_code = 550

Создадим в MySQL-е пользователя:
# mysql -uroot -p
> GRANT SELECT ON dbmail.* TO postfix@localhost IDENTIFIED BY '<postfix_pass>';
> quit

Создадим файл /usr/local/etc/postfix/sql-recipients.cf со следующим содержимым:
user = postfix
password = <postfix_pass>
hosts = localhost
dbname = dbmail
table = dbmail_aliases
select_field = alias
where_field = alias 

Рихтуем /etc/rc.conf
# echo 'sendmail_enable="NO"' >> /etc/rc.conf
# echo 'sendmail_submit_enable="NO"' >> /etc/rc.conf
# echo 'sendmail_outbound_enable="NO"' >> /etc/rc.conf
# echo 'sendmail_msp_queue_enable="NO"' >> /etc/rc.conf
# echo 'postfix_enable="YES"' >> /etc/rc.conf

Запускаемся
# rehash
# newaliases
# ln -s /etc/mail/aliases.db /etc/aliases.db
# postmap /usr/local/etc/postfix/transport
# postfix start

     
       
Авторизация SASL2+TLS

Устанавливаем sasl2:
# cd /usr/ports/security/cyrus-sasl2

Удаляем, первоначально пакет поставился по зависимости от Postfix-a с неправильными опциями. По идее, sasl надо было поставить раньше Postfix-a.
# make deinstall
# make config

Выбираем опции: MYSQL AUTHDEMOND LOGIN PLAIN CRAM DIGEST
make install clean

Генерируем сертификат для Postfix-a:
# mkdir /usr/local/etc/postfix/ssl
# cd /usr/local/etc/postfix/ssl
# openssl req -new -x509 -nodes -out smtpd.pem -keyout smtpd.pem -days 3650

     
 
Настраиваем TLS.
 
Добавляем в /usr/local/etc/postfix/main.cf слежующее:
# TLS
smtp_use_tls = yes
smtpd_use_tls = yes 
smtp_tls_note_starttls_offer = yes 
smtpd_tls_key_file = /usr/local/etc/postfix/ssl/smtpd.pem
smtpd_tls_cert_file = /usr/local/etc/postfix/ssl/smtpd.pem
smtpd_tls_CAfile = /usr/local/etc/postfix/ssl/smtpd.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom

Перезагружаем Postfix
# postfix reload

Проверяем:
# telnet <postfix_ip_address> 25
Trying <postfix_ip_address>...
Connected to <postfix_ip_address>.
Escape character is '^]'.
220 mx.kscom.ru ESMTP Postfix
EHLO example.com
250-mx.kscom.ru
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
QUIT
221 2.0.0 Bye
Connection closed by foreign host.

Смотрим что появилась 250-STARTTLS значит, вроде все нормально. Настраиваем авторизацию.

Создаем файл /usr/local/lib/sasl2/smtpd.conf со следующим содержимым:
pwcheck_method: auxprop
auxprop_plugin: sql
mech_list: digest-md5 cram-md5 login plain
sql_engine: mysql
sql_hostnames: localhost
sql_user: postfix
sql_passwd: <postfix_pass>
sql_database: dbmail
sql_select: select passwd from dbmail_users where userid='%u'
sql_verbose: yes

Добавляем в /usr/local/etc/postfix/main.cf следующее:
# SASL
broken_sasl_auth_clients = yes
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = 

В файле /usr/local/etc/postfix/master.cf расскоментируем секцию smtps

Перезагружаем Postfix
postfix reload

Проверяем:
# telnet <postfix_ip_address> 25
Trying <postfix_ip_address>...
Connected to <postfix_ip_address>.
Escape character is '^]'.
220 mx.kscom.ru ESMTP Postfix
EHLO example.com
250-mx.kscom.ru
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH LOGIN PLAIN DIGEST-MD5 CRAM-MD5
250-AUTH=LOGIN PLAIN DIGEST-MD5 CRAM-MD5
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
QUIT
221 2.0.0 Bye
Connection closed by foreign host.

Видим AUTH LOGIN PLAIN DIGEST-MD5 CRAM-MD5
Вроде все
   
   
Антиспам фильтр DSpam

Подготавливаем
# cd /usr/ports/mail/dspam
# make config

Выбираем опции: SYSLOG DEBUG VERBOSE_DEBUG DAEMON CLAMAV CLAMAV_LOCAL MYSQL51 MYSQL_COMPRESS MYSQL_LOCAL VIRT_USERS LONG_USERNAMES POSTFIX_MBC CGI

Устанавливаем
# make install clean

При установке автоматом подсосется ClamAV

Создаем базу и пользователя
# mysql -uroot -p
> CREATE DATABASE dspam default character set "UTF8";
> GRANT ALL ON dspam.* to dspam@localhost identified by '<dspam_pass>';
> quit
# mysql -udspam -p dspam < /usr/local/share/examples/dspam/mysql/mysql_objects-speed.sql
# mysql -udspam -p dspam < /usr/local/share/examples/dspam/mysql/virtual_users.sql

Правим конфиг DSpam-a /usr/local/etc/dspam.conf

Настраиваем соединение с MySQL
MySQLServer    /tmp/mysql.sock
MySQLPort
MySQLUser      dspam
MySQLPass      <dspam_pass>
MySQLDb        dspam
MySQLCompress  true

А также
MySQLVirtualTable           dspam_virtual_uids
MySQLVirtualUIDField        uid
MySQLVirtualUsernameField   username

Конфигурируем dspam как сервер
ServerMode		auto
ServerParameters        "--deliver=innocent"
ServerIdent             "localhost.localdomain"
ServerPID               /var/run/dspam.pid
ServerDomainSocketPath  "/tmp/dspam.sock"

Настраиваем, куда dspam будет отдавать проверенную почту
DeliveryHost        127.0.0.1
DeliveryPort        10026
DeliveryIdent       localhost
DeliveryProto       SMTP

Добавляем строки
ParseToHeaders on
ChangeModeOnParse on
ChangeUserOnParse full

Рихтуем rc.conf
# echo 'dspam_enable="YES"' >> /etc/rc.conf
# echo 'dspam_debug="YES"' >> /etc/rc.conf

Чтобы DSPAM заработал пришлось ребутнуться.
# reboot

Правим /usr/local/etc/postfix/master.cf
smtp      inet  n       -       n       -       -        smtpd
  -o content_filter=lmtp:unix:/tmp/dspam.sock
localhost:10026 inet  n -       n       -       -        smtpd
  -o content_filter=
  -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
  -o smtpd_helo_restrictions=
  -o smtpd_client_restrictions=
  -o smtpd_sender_restrictions=
  -o smtpd_recipient_restrictions=permit_mynetworks,reject
  -o mynetworks=127.0.0.0/8
  -o smtpd_authorized_xforward_hosts=127.0.0.0/8

 

Прикручиваем антивирус

Редактируем /usr/local/etc/clamd.conf

Расскомментируем строки
TCPSocket   3310
TCPAddr     127.0.0.1

Редактируем dspam.conf
ClamAVPort	 3310
ClamAVHost	 127.0.0.1
ClamAVResponse spam

Рихтуем rc.conf
#echo 'clamav_clamd_enable="YES"' >> /etc/rc.conf
# echo 'clamav_freshclam_enable="YES"' >> /etc/rc.conf

Запускаемся
# /usr/local/etc/rc.d/clamav-freshclam start
# /usr/local/etc/rc.d/clamav-clamd start
# /usr/local/etc/rc.d/dspam restart

Готово
 
 
Обучаем DSPAM

Особая благодарность Евгению Прокопьеву за его скрипт обучения DSPAM-a.
На его основе мы создадим скрипт dspam-learn

#!/usr/local/bin/python

# Copyright (C) 2008 Eugene Sazonov <zheromo at mail dot ru>
# Modify for use with MySQL and spam/ham training
# Original source: http://osdir.com/ml/linux.altlinux.sysadmins/2007-01/msg00147.html
#
#
# Copyright (C) 2006 Eugene Prokopiev <enp at altlinux dot org>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later
# version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

import MySQLdb as db
import sys, os, getopt, email.Parser, re

def export(connection):

parser = email.Parser.Parser()
from_extractor = re.compile(r"[<>]")

cursor_mailboxes = connection.cursor()
cursor_messages = connection.cursor()
cursor_messageblks = connection.cursor()
cursor_modify = connection.cursor()

sql_mailboxes = """select distinct alias from dbmail_aliases"""

sql_messages = {

'spam': """ select message_idnr, internal_date from dbmail_aliases
inner join dbmail_users on dbmail_aliases.deliver_to = dbmail_users.user_idnr
inner join dbmail_mailboxes on dbmail_users.user_idnr = dbmail_mailboxes.owner_idnr
inner join dbmail_messages on dbmail_mailboxes.mailbox_idnr = dbmail_messages.mailbox_idnr
inner join dbmail_physmessage on dbmail_messages.physmessage_id = dbmail_physmessage.id
where dbmail_messages.spam_flag=0
and dbmail_messages.status < 2
and dbmail_mailboxes.name = 'Spam'
and dbmail_aliases.alias = %s order by message_idnr;
""",

'ham' : """select message_idnr, internal_date from dbmail_aliases
inner join dbmail_users on dbmail_aliases.deliver_to = dbmail_users.user_idnr
inner join dbmail_mailboxes on dbmail_users.user_idnr = dbmail_mailboxes.owner_idnr
inner join dbmail_messages on dbmail_mailboxes.mailbox_idnr = dbmail_messages.mailbox_idnr
inner join dbmail_physmessage on dbmail_messages.physmessage_id = dbmail_physmessage.id
where dbmail_messages.spam_flag=1
and dbmail_messages.ham_flag=0
and dbmail_messages.status < 2
and dbmail_mailboxes.name != 'Spam'
and dbmail_aliases.alias = %s order by message_idnr;
""" }

sql_messageblks = """
select messageblk, is_header from dbmail_messageblks
inner join dbmail_messages on dbmail_messageblks.physmessage_id = dbmail_messages.physmessage_id
where message_idnr = %s order by dbmail_messageblks.messageblk_idnr
"""

def process(spam_class):
count = 0
cursor_messages.execute(sql_messages[spam_class], alias)
for message_idnr, internal_date in cursor_messages.fetchall():
count = count + 1
dspam = os.popen(("/usr/local/bin/dspam --class=%s --source=error --user '%s' --mode=teft --feature=chained,noise" % (spam_class,alias,) ), "w")
cursor_messageblks.execute(sql_messageblks, (message_idnr,))
for messageblk, is_header in cursor_messageblks.fetchall():
if (is_header == 1):
from_header = from_extractor.split(parser.parsestr(messageblk).get("From"))
if (len(from_header) == 1):
from_header = from_header[0]
elif (len(from_header) == 3):
from_header = from_header[1]
else:
from_header = "-"
print "Processing message from %s ..." % from_header
dspam.write("From "+from_header+" "+internal_date.strftime("T%Y-%m-%d %H:%M:%S")+"\n")
dspam.write(messageblk+"\n")
cursor_modify.execute("update dbmail_messages set %s_flag=1 where message_idnr=%%s" % spam_class, (message_idnr,))
dspam.close()
print "Processed mailbox %s with %s %s messages" % (("%s" % alias), count, spam_class,)


cursor_mailboxes.execute(sql_mailboxes)
for alias in cursor_mailboxes.fetchall():
print "Processing mailbox %s ..." % ("%s" % alias)
process('spam')
process('ham')
print

def main(argv):

server = "localhost"
database = "dbmail"
login = "dbmail"
password = "<dbmail_passwd>"

connection = db.connect(host=server,db=database,user=login,passwd=password)
connection.begin();
export(connection)
connection.commit()

if __name__ == "__main__":
main(sys.argv[1:])

Для работы скрипта устанавливаем pyMySQLdb
# cd /usr/ports/databases/py-MySQLdb
# make install clean

Oпции по умолчанию

Алгоритм работы скрипта таков:
  1. письма, которые пользователь поместит в папку Spam будут переданы на обработку фильтру, помеченные как спамовые
  2. те письма, которые ошибочно приняты за спам, можно переместить из папки Spam в любую другую, и они будут переданы фильтру на обучение, помеченные как ошибочно принятые за спам
  3. почтовый сервер должен складывать опознанные фильтром как спам письма в папку Spam пользователя, если она у него есть

Поместим скрипт в файл /usr/local/bin/dspam-learn и назначим его запуск по расписанию
# chmod +x /usr/local/bin/dspam-learn

И добавим в /etc/crontab строку
10 * * * * root /usr/local/bin/dspam-learn >> /dev/null

 
Теперь нужно научиться складывать плохие письма в папку Spam

Добавим для этого в dspam.conf строчку
QuarantineAgent "/usr/local/sbin/dbmail-smtp -m Spam -u %u"

 
 
Web-интерфейс RoundCube

Устанавливаем php5
# cd /usr/ports/lang/php5
# make install clean

Выбираем опции CLI CGI APACHE SUHOSIN MULTIBYTE FASTCGI PATHINFO

Включаем PHP в Apache
Создаем файл /usr/local/etc/apache22/Includes/httpd-php5.conf содержащий
LoadModule php5_module libexec/apache22/libphp5.so
AddHandler php5-script .php
AddType text/html .php
DirectoryIndex index.php
Ctrl+Z

В конфиге Apache-a /usr/local/etc/apache22/httpd.conf если есть комментируем строку
LoadModule php5_module libexec/apache22/libphp5.so

Перезапускаем Apache
# /usr/local/etc/rc.d/apache22 restart

Устанавливаем круглокуба
# cd /usr/ports/mail/roundcube
# make install clean

Выбираем опции MYSQL и SSL

Создадим ссылку для доступа
# ln -s /usr/local/www/roundcube /usr/local/www/apache22/data/mail

Создаем окружение в mySQL-е
# mysql -uroot -p
> CREATE DATABASE rcmail default character set "UTF8";
> GRANT ALL ON rcmail.* to roundcube@localhost identified by '<rcpass>';
> quit
# mysql -uroundcube -p rcmail < /usr/local/www/roundcube/SQL/mysql5.initial.sql

Правим конфиги круглокуба

в /usr/local/www/roundcube/config/db.inc.php правим строку

$rcmail_config['db_dsnw'] = 'mysql://roundcube:<rcpass>@localhost/rcmail';

в /usr/local/www/roundcube/config/main.inc.php правим строки

$rcmail_config['default_host'] = '127.0.0.1';
$rcmail_config['mail_domain'] = 'kscom.ru';
$rcmail_config['smtp_server'] = '127.0.0.1';
$rcmail_config['smtp_helo_host'] = 'mx.kscom.ru';
$rcmail_config['default_charset'] = 'UTF-8';

Набираем в браузере https://<ip_адрес_сервера>/mail и пробуем зайти.


TO DO

  1. Хранить пароли в базе в хэшированном виде
  2. Написать веб-морду для управления DBMail-ом

Ссылки

http://google.ru
http://postfix.org
http://dbmail.org
http://yocum.org/faqs/postfix-tls-sasl.html
http://lists.altlinux.org/pipermail/community/2005-October/365238.html
http://osdir.com/ml/linux.altlinux.sysadmins/2007-01/msg00147.html
http://www.lissyara.su/?id=1062
http://marty.anstey.ca/freebsd/qmail_dbmail/install_dbmail.php
http://www.opennet.ru/tips/info/887.shtml



размещено: 2008-10-02,
последнее обновление: 2008-10-03,
автор: zheromo


serge, 2008-10-02 в 17:18:18

Что-то часто перезагружаетесь. Вроде не винда :(

zheromo, 2008-10-03 в 6:20:19

Всего два раза, просто лениво было разбираться почему сервисы сами не стартовали.

abigor, 2008-10-03 в 7:05:36

наверно по тому что ленились их вручную запустить
>Перезагружаемся.
># reboot
явно лишние, можно так решить вашу проблему
/usr/local/etc/rc.d/mysql-server start
/usr/local/etc/rc.d/apache22 start
/usr/local/etc/rc.d/dspam start

zheromo, 2008-10-03 в 7:21:09

Все то и дело что без перезагрузки именно эти сервисы (MySQL и DSPAM) и не стартовали таким образом

awamax, 2008-10-09 в 15:32:55

reboot не кореектная команда, нужно делать shutdown -r now

Kolesya, 2008-10-11 в 9:08:14

Посмотри
/usr/local/etc/rc.d/mysql-server rcvar
cat /etc/rc.conf | grep mysql

а также помогут
/usr/local/etc/rc.d/mysql-server forcerestart
/usr/local/etc/rc.d/mysql-server forcestart
/usr/local/etc/rc.d/mysql-server forcestop



alexey_white, 2009-03-19 в 11:30:30

Программа обучения DSpam выдает следующую ошибку
 File ".//dspam-learn", line 30
   parser = email.Parser.Parser()
        ^
IndentationError: expected an indented block

Скотина, 2009-03-19 в 11:41:15

Сожалею, что после слова Антиспам я только пролистал статью, но по делу могу сказать, что есть маленькое упущение: dbmail-imapd, dbmail-pop3d, dbmail-lmtpd
не стартуют в первый раз сами, поскольку не могут создать
в /var/run свои pid'ы выполняясь с правами nobody:nogroup.
(Для stunnel автор это действие оговорил отдельно).


Александр, 2009-06-06 в 18:55:48

Спасибо большое за статью. У меня заработало. Проблема возникла только с dspam... не захотела с ним ходить почта. Я не стал разбираться. После удаления dspam все закрутилось. НУ конечно кое что под себя докидал. Postfix пожеще настроил.

ProFTP, 2009-09-02 в 4:27:56

А квоту то dbmail сам на урвоне бд рубает?

добавить в конфиг postfix запрос для квоты и доменов может надо?

storm1976, 2009-09-09 в 11:48:33

Таки скрипт питоновский наверно не будет работать - у него же вместо бегинов-эндов отступы, а в тексте ни одного нет.

Firestorm, 2009-10-20 в 23:00:33

При использовании Imap и почтового клиента Mozilla Thunderbird наблюдался глюк.imap сервер отказывался отображать папки imap,отбрасывал соединения. Исправилось установкой параметров ncchildren до 40 для моего случая и maxchildren до 50.

Phanthom, 2009-11-02 в 7:06:25

Не запустился круглокуб. пишет что не может подконнектиться к базе. глянул в логах - пишет extension mysql is not compiled into php
Разбираться не стал - уехал на работу. Вечером поковыряю...
Кроме пары опечаток в тексте - всё норм.

Phanthom, 2009-11-11 в 21:48:56

postmap /usr/local/etc/postfix/transport
а что внутри транспортной карты??

Firestorm, 2009-12-05 в 20:06:33

TO Phanthom
Внутри файлика с транспортом следующее например:

localhost  dbmail-lmtp:127.0.0.1

4ita4ok, 2009-12-18 в 17:51:26

Я новичок в этом деле. стояла задача поставить сервак почтовый. так вот суть коммента в том что Дспам работает с Мускулями от 4,0 до 5,1. а у меня стоял старше эт грабли :(

Чеширский, 2009-12-19 в 4:52:25

А конторка то знакомая, кемеровская))

Сергей, 2010-04-11 в 10:45:18

после команды - # postmap /usr/local/etc/postfix/transport появляется ошибка, no such file or directory, ставил все по вашему примеру, подскажите что делать, пожалуйста?

sofinan, 2012-03-22 в 6:33:48

Не запускается dbmail:
EMERGENCY:[pidfile] pidfile_create(+113): Cannot open pidfile [/var/run/dbmail/dbmail-imapd.pid], error was [Permission denied]
Решение: в конфиге dbmail.conf делаем pid_directory=/var/run/dbmail/

и nobody:nogroup

sofinan, 2012-03-22 в 10:47:00

# mysql -udspam -p dspam < /usr/local/share/examples/dspam/mysql/mysql_objects-speed.sql
# mysql -udspam -p dspam < /usr/local/share/examples/dspam/mysql/virtual_users.sql

Данная конструкция не работает с версией mysql5 и выше, т.к. служебное слово type= обозначено, как устаревшее, необходимо в данных файлах изменить type= на engine=

poltinnik, 2013-09-09 в 11:35:13

А как заставить эту всю конструкцию принимат почту снаружи. Если просто сделать "echo hello | mail -s "Test Message" test@mydomain.com", то письмо приходит. А если снаружи сделать отправку - User unknown in local recipient table.

Андрей, 2013-11-21 в 10:54:25

Почти все заработало, за исключением серьезного НО. Письма ходить начали, но в БД ничего не записывалось. Пришлось в dbmail.conf коментить строки подключения к базе, и прописывать dburi =mysql://localhost/dbmail?user=dbmail&password=mypass&sqlsocket=/tmp/mysql.sock

После начало ходить как положено. До конца еще не дотестил.

Андрей, 2013-12-03 в 9:39:06

Однако большие письма не проходят. При вложении около 1 Мб и выше вложения бьются на мелкие,и не открываются.

Андрей, 2013-12-03 в 14:46:40

Правится изменением настроек максимального размера сообщения в mySQL



 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0653 секунд
Из них PHP: 52%; SQL: 48%; Число SQL-запросов: 77 шт.
У Вас отключено GZIP-сжатие в браузере. Размер страницы 79967