Почтовый сервер на Debian 9 полная установка: dbmail & postgresql & postfix & stunnel & postgrey& spamassassin: различия между версиями
Материал из support.qbpro.ru
imported>Vix Нет описания правки |
imported>Vix Нет описания правки |
||
Строка 544: | Строка 544: | ||
Источники: | Источники: | ||
<hr> | <hr> | ||
* [https://www.opennet.ru/docs/RUS/dbmail_postfix/ Почтовый сервер на основе реляционной СУБД.] | |||
* [http://library.mobrien.com/dbmailadministrator/ GUI-конфигуратора DbMail Administrator (DBMA), написанного на Perl] | * [http://library.mobrien.com/dbmailadministrator/ GUI-конфигуратора DbMail Administrator (DBMA), написанного на Perl] | ||
* [https://habrahabr.ru/post/37195/ Настройка exim+postgresql+dbmail+spamassassin...] | * [https://habrahabr.ru/post/37195/ Настройка exim+postgresql+dbmail+spamassassin...] |
Версия от 18:06, 31 октября 2017
Порядок установки:
- Система Debian Stretch {9}
- Используемый source.list
# deb http://mirror.mephi.ru/debian/ stretch main deb-src http://mirror.mephi.ru/debian/ stretch main deb http://security.debian.org/debian-security stretch/updates main deb-src http://security.debian.org/debian-security stretch/updates main # stretch-updates, previously known as 'volatile' deb http://mirror.mephi.ru/debian/ stretch-updates main deb-src http://mirror.mephi.ru/debian/ stretch-updates main ###### Debian Main Repos deb http://deb.debian.org/debian/ stable main contrib non-free deb-src http://deb.debian.org/debian/ stable main contrib non-free deb http://deb.debian.org/debian/ stable-updates main contrib non-free deb-src http://deb.debian.org/debian/ stable-updates main contrib non-free deb http://deb.debian.org/debian-security stable/updates main contrib non-free deb-src http://deb.debian.org/debian-security stable/updates main contrib non-free deb http://ftp.debian.org/debian stretch-backports main contrib non-free deb-src http://ftp.debian.org/debian stretch-backports main contrib non-free
1. Устанавливаем необходимые пакеты:
apt-get install pkg-config libglib2.0-dev libgmime-2.6-dev libmhash-dev libevent-dev libssl1.0-dev libzdb-dev autoconf automake libtool autotools-dev dpkg-dev fakeroot
2. Скачиваем с dbmail.org исходники:
wget -c -t 0 -T 8 http://www.dbmail.org/download/3.1/dbmail-3.1.17.tar.gz
3. Распаковываем и компилируем:
cp dbmail-3.1.17.tar.gz /usr/local/src tar -xf dbmail-3.1.17.tar.gz /usr/local/src.dbmail-3.1.17 cp dbmail-3.1.17.tar.gz /usr/local/src/dbmail_3.0.2.orig.tar.gz
Готовим пакет к сборке:
cd /usr/local/src/dbmail-3.2.3 ./configure --with-pgsql --prefix=/usr dpkg-source --commit
даем имя, что-то pgsql.commit
cd /usr/local/src/ dpkg-source -b dbmail-3.2.3
cd /usr/local/src/dbmail-3.2.3 dpkg-buildpackage -d
- после того как соберется пакет, копируем себе в архив и ставим.
dpkg -i dbmail_3.2.3-1_amd64.deb
- правим файл конфигурации:
editor /etc/dbmail/dbmail.conf
- пример рабочего конфигурационного файла:
# (c) 2000-2006 IC&S, The Netherlands # # Configuration file for DBMAIL [DBMAIL] # # Database settings # # database connection URI #dburi = sqlite:///var/tmp/dbmail.db # # Supported drivers are sql, ldap. # authdriver = sql # # # following fields are now DEPRECATED! driver = postgresql host = 10.0.5.2 sqlport = 5432 #sqlsocket = user = dbmail pass = dbmailpass db = mailbasename # # Number of database connections per threaded daemon # This also determines the size of the worker threadpool # # Do NOT increase this without proper consideration. A # very large database/worker pool will not only increase # the connection pressure on the database, but will more # significantly cause unnecessary context-switching in # your CPUs. # #max_db_connections = 10 # # Table prefix. Defaults to "dbmail_" if not specified. # table_prefix = dbmail_ # # encoding must match the database/table encoding. # i.e. latin1, utf8 encoding = utf8 # # messages with unknown encoding will be assumed to have # default_msg_encoding # i.e. iso8859-1, utf8 default_msg_encoding = utf8 # # Postmaster's email address for use in bounce messages. # #postmaster = DBMAIL-MAILER # # Sendmail executable for forwards, replies, notifies, vacations. # You may use pipes (|) in this command, for example: # dos2unix|/usr/sbin/sendmail works well with Qmail. # You may use quotes (") for executables with unusual names. # sendmail = /usr/sbin/sendmail # # # The following items can be overridden in the service-specific sections. # # # # Logging via stderr/log file and syslog # # Logging is broken up into 8 logging levels and each level can be indivually turned on or off. # The Stderr/log file logs all entries to stderr or the log file. # Syslog logging uses the facility mail and the logging level of the event for logging. # Syslog can then be configured to log data according to the levels. # # Set the log level to the sum of the values next to the levels you want to record. # 1 = Emergency # 2 = Alert # 4 = Critical # 8 = Error # 16 = Warning # 32 = Notice # 64 = Info # 128 = Debug # 256 = Database -> Logs at debug level # # Examples: 0 = Nothing # 31 = Emergency + Alert + Critical + Error + Warning # 511 = Everything # file_logging_levels = 7 # syslog_logging_levels = 31 # # Generate a log entry for database queries for the log level at number of seconds of query execution time. # query_time_info = 10 query_time_notice = 20 query_time_warning = 30 # # Throw an exception is the query takes longer than query_timeout seconds query_timeout = 300 # # Root privs are used to open a port, then privs # are dropped down to the user/group specified here. # effective_user = dbmail effective_group = mail # # The IPv4 and/or IPv6 addresses the services will bind to. # Use * for all local interfaces. # Use 127.0.0.1 for localhost only. # Separate multiple entries with spaces ( ) or commas (,). # bindip = 0.0.0.0 # IPv4 only - all IP's #bindip = :: # IPv4 and IPv6 - all IP's (linux) #bindip = :: # IPv6 only - all IP's (BSD) #bindip = 0.0.0.0,:: # IPv4 and IPv6 - all IP's (BSD) # # The maximum length of the queue of pending connections. See # listen(2) for more information # # backlog = 128 # # Idle time allowed before a connection is shut off. # timeout = 300 # # Idle time allowed before a connection is shut off if you have not logged in yet. # login_timeout = 60 # # If yes, resolves IP addresses to DNS names when logging. # resolve_ip = yes # # If yes, keep statistics in the authlog table for connecting users # authlog = no # # logfile for stdout messages # logfile = /var/log/dbmail.log # # logfile for stderr messages # errorlog = /var/log/dbmail.err # # directory for storing PID files # pid_directory = /var/run/dbmail # # directory for locating libraries (normally has a sane default compiled-in) # library_directory = /usr/lib/dbmail # # SSL/TLS certificates # # A file containing a list of CAs in PEM format tls_cafile = # A file containing a PEM format certificate tls_cert = # A file containing a PEM format RSA or DSA key tls_key = # A cipher list string in the format given in ciphers(1) tls_ciphers = # hashing algorithm. You can select your favorite hash type # for generating unique ids for message parts. # # for valid values check mhash(3) but minus the MHASH_ prefix. # # if you ever change this value run 'dbmail-util --rehash' to # update the hash for all mimeparts. # # examples: MD5, SHA1, SHA256, SHA512, TIGER, WHIRLPOOL # # hash_algorithm = SHA1 # header_cache tuning # # set header_cache_readonly to 'yes' to prevent new # unknown header-names from being cached. # # header_cache_readonly = yes [LMTP] bindip = 127.0.0.1 port = 24 #tls_port = [POP] port = 110 #tls_port = 995 # You can set an alternate banner to display when connecting to the service # banner = DBMAIL pop3 server ready to rock # # If yes, allows SMTP access from the host IP connecting by POP3. # This requires addition configuration of your MTA # pop_before_smtp = no [HTTP] port = 41380 # # the httpd daemon provides full access to all users, mailboxes # and messages. Be very careful with this one! bindip = 127.0.0.1 admin = admin:secret [IMAP] # You can set an alternate banner to display when connecting to the service # banner = imap 4r1 server (dbmail 2.3.x) # # Port to bind to. # port = 143 ##tls_port = 993 # # IMAP prefers a longer timeout than other services. # timeout = 4000 # # If yes, allows SMTP access from the host IP connecting by IMAP. # This requires addition configuration of your MTA # imap_before_smtp = no # # during IDLE, how many seconds between checking the mailbox # status (default: 30) # # idle_timeout = 30 # during IDLE, how often should the server send an '* OK' still # here message (default: 10) # # the time between such a message is idle_timeout * idle_interval # seconds # # idle_interval = 10 # # If TLS is enabled, login before starttls is normally # not allowed. Use login_disabled=no to change this # # login_disabled = yes # # Provide a CAPABILITY to override the default # # capability = IMAP4 IMAP4rev1 AUTH=LOGIN ACL RIGHTS=texk NAMESPACE CHILDREN SORT QUOTA THREAD=ORDEREDSUBJECT UNSELECT IDLE # max message size. You can specify the maximum message size # accepted by the IMAP daemon during APPEND commands. # # Supported formats: # decimal: 1000000 # octal: 03777777 # hex: 0xfffff # # max_message_size = [SIEVE] # # Port to bind to. # port = 2000 tls_port = [LDAP] port = 389 version = 3 hostname = ldap base_dn = ou=People,dc=mydomain,dc=com # # If your LDAP library supports ldap_initialize(), then you can use the # alternative LDAP server DSN like following. # # URI = ldap://127.0.0.1:389 # URI = ldapi://%2fvar%2frun%2fopenldap%2fldapi/ # # Leave blank for anonymous bind. # example: cn=admin,dc=mydomain,dc=com # bind_dn = # # Leave blank for anonymous bind. # bind_pw = scope = SubTree # AD users may want to set this to 'no' to disable # ldap referrals if you are seeing 'Operations errors' # in your logs # referrals = yes user_objectclass = top,account,dbmailUser forw_objectclass = top,account,dbmailForwardingAddress cn_string = uid field_passwd = userPassword field_uid = uid field_nid = uidNumber min_nid = 10000 max_nid = 15000 field_cid = gidNumber min_cid = 10000 max_cid = 15000 # a comma-separated list of attributes to match when searching # for users or forwards that match a delivery address. A match # on any of them is a hit. field_mail = mail # field that holds the mail-quota size for a user. field_quota = mailQuota # field that holds the forwarding address. field_fwdtarget = mailForwardingAddress # override the query string used to search for users # or forwards with a delivery address. # query_string = (mail=%s) [DELIVERY] # # Run Sieve scripts as messages are delivered. # SIEVE = yes # # Use 'user+mailbox@domain' format to deliver to a mailbox. # SUBADDRESS = yes # # Turn on/off the Sieve Vacation extension. # SIEVE_VACATION = yes # # Turn on/off the Sieve Notify extension # SIEVE_NOTIFY = yes # # Turn on/off additional Sieve debugging. # SIEVE_DEBUG = no # Use the auto_notify table to send email notifications. # AUTO_NOTIFY = no # # Use the auto_reply table to send away messages. # AUTO_REPLY = no # # Defaults to "NEW MAIL NOTIFICATION" # #AUTO_NOTIFY_SUBJECT = # # Defaults to POSTMASTER from the DBMAIL section. # #AUTO_NOTIFY_SENDER = # If you set this to 'yes' dbmail will check for duplicate # messages in the relevant mailbox during delivery using # the Message-ID header # suppress_duplicates = no # # Soft or hard bounce on over-quota delivery # quota_failure = hard # end of configuration file
- перезапуск службы:
systemctl restart dbmail
- С установкой dbmail пока окончено, следующий этап установка postgesql и настройка для будущей работы.
5. После того как мы настроили базу данных postgresql, создаем пользователя dbmail и базу dbmail
- Создаем пользователя для работы с почтовой базой
createuser -U postgres -P dbmail
- Создаем базу
createdb -U postgres --owner dbmail dbmail
- Вместе с dbmail идут заготовки базы, распаковываем и заливаем:
bunzip2 /usr/share/doc/dbmail-2.2.10/create_tables.pgsql.bz2 psql -U dbmail -d dbmail < /usr/share/doc/dbmail-2.2.10/create_tables.pgsql
- В этом дампе нету таблицы для работы с виртуальными доменами, создадим ее:
CREATE TYPE dtype AS ENUM ( 'LOCAL', 'VIRTUAL', 'RELAY' ); ALTER TYPE public.dtype OWNER TO dbmail; SET default_with_oids = true; CREATE TABLE dbmail_domains ( uid integer NOT NULL, domain character varying(128) NOT NULL, type dtype NOT NULL ); INSERT INTO dbmail_domains (uid, domain, type) VALUES (1, 'example.com', 'LOCAL');
База готова.
- проверяем работу dbmail c базой:
dbmail-util -av
если есть ошибки, исправляем не забывая проверить файл конфигурации...
.. если все ок, приступаем к настройке postfix
5. Настройка Postfix
apt-get install postfix
Источники:
- Почтовый сервер на основе реляционной СУБД.
- GUI-конфигуратора DbMail Administrator (DBMA), написанного на Perl
- Настройка exim+postgresql+dbmail+spamassassin...
- Создание почтовой системы на базе exim, dbmail, amavisd-new и postgresql
- Почтовый сервер на основе реляционной СУБД
- Почтовый сервер с хранением данных в PostgreSQL
- Exim (exim mail mta virtual spam virus clamav freebsd imap postgresql)
- Создание почтовой системы на базе exim, dbmail, amavisd-new и postgresql
- Exim и dbmail