The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Установка Exim с поддержкой виртуальных аккаунтов (база в MySQL) (mail exim virtual)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: mail, exim, virtual,  (найти похожие документы)
From: ginger Newsgroups: Ru.Board (http://ru-board.com) Date: Mon, 20 Nov 2004 18:21:07 +0000 (UTC) Subject: Установка Exim с поддержкой виртуальных аккаунтов (база в MySQL) Оригинал: http://ru-board.com/new/article.php?sid=150 В данной статье мы рассмотрим установку почтового сервера на базе Exim с поддержкой виртуальных аккаунтов (MySQL). Exim - свободно распространяемый Mail Transport Agent (MTA), обладающий возможностью очень гибкой и тонкой настройки, включая поиск конфигурационной информации в различных базах данных. Кроме того, Exim поддерживает Maildir (quota), SMTP-аутентификацию и TLS/SSL без применения патчей. Исходные данные: FreeBSD 4.6 MySQL 3.23.49 OpenSSL 0.9.7a Все действия выполняются от супер-пользователя root. Сначала скачиваем дистрибутив Exim с сайта производителя: http://www.exim.org bash-2.05a# cd /var/tmp bash-2.05a# wget ftp://ftp.exim.org/pub/exim/exim4/exim-4.20.tar.gz bash-2.05a# md5 exim-4.20.tar.gz MD5 (exim-4.20.tar.gz) = a1f06f1de1ab602a25d78ad2a20819f2 Создаем пользователя, необходимого для работы Exim. bash-2.05a# pw useradd mail -c "Mail Server" -d /var/spool/mqueue -g mail -s /sbin/nologin su-2.05a# cat /etc/passwd |grep mail mail:*:1005:6:Mail Server:/var/spool/mqueue:/sbin/nologin su-2.05a# cat /etc/group |grep mail mail:*:6: su-2.05a# cd exim-4.20 su-2.05a# cp src/EDITME Local/Makefile Отредактируем Local/Makefile, изменив следующее: BIN_DIRECTORY=/usr/exim/bin на: BIN_DIRECTORY=/usr/sbin Здесь мы указываем путь установки исполняемых файлов Exim'а. CONFIGURE_FILE=/usr/exim/configure на: CONFIGURE_FILE=/etc/mail/exim.conf Здесь мы указываем имя и путь к файлу конфигурации Exim'а. EXIM_USER= на: EXIM_USER=1005 Здесь мы указываем числовой идентификатор пользователя, от имени которого будет работать Exim. В нашем случае это пользователь с именем mail. # EXIM_GROUP= на: EXIM_GROUP=6 Указываем числовой идентификатор группы, от имени которой будет работать Exim. В нашем случае это группа с именем mail. SPOOL_DIRECTORY=/var/spool/exim на: SPOOL_DIRECTORY=/var/spool/mqueue Указываем имя spool-директории. # SUPPORT_MAILDIR=yes на: SUPPORT_MAILDIR=yes Этим мы включаем поддержку Maildir. # LOOKUP_MYSQL=yes на: LOOKUP_MYSQL=yes Этим мы включаем поддержку MySQL. Для того, чтобы узнать путь к файлам библиотек и заголовков MySQL, выполним: su-2.05a# mysql_config Usage: /usr/local/bin/mysql_config [OPTIONS] Options: --cflags [-I'/usr/local/include/mysql'] --libs [-L'/usr/local/lib/mysql' -lmysqlclient -lz -lcrypt -lm] --socket [/tmp/mysql.sock] --port [3306] --version [3.23.49] Полученные значения подставляем в строках ниже. # LOOKUP_INCLUDE=-I /usr/local/ldap/include -I \ /usr/local/mysql/include -I/usr/local/pgsql/include # LOOKUP_LIBS=-L/usr/local/lib -lldap -llber -lmysqlclient -lpq на: LOOKUP_INCLUDE=-I /usr/local/include/mysql LOOKUP_LIBS=-L/usr/local/lib/mysql -lmysqlclient -lz -lcrypt -lm EXIM_MONITOR=eximon.bin на: #EXIM_MONITOR=eximon.bin Здесь мы выключаем поддержку Exim Monitor. Для работы Exim Monitor требуется наличие X11, нами это не используется. # AUTH_CRAM_MD5=yes # AUTH_PLAINTEXT=yes на: AUTH_CRAM_MD5=yes AUTH_PLAINTEXT=yes Здесь мы включаем поддержку SMTP-аутентификации PLAIN и CRAM-MD5. # SUPPORT_TLS=yes на: SUPPORT_TLS=yes Этим мы включаем поддержку TLS/SSL для обеспечения защищенного соединения. # TLS_LIBS=-lssl -lcrypto на: TLS_LIBS=-lssl -lcrypto Указываем имена используемых библиотек для TLS/SSL. # LOG_FILE_PATH=syslog на: LOG_FILE_PATH=syslog Указываем, что журнальная информация должна фиксироваться в syslog. # EXIM_PERL=perl.o на: EXIM_PERL=perl.o Включаем поддержку perl, чтобы обеспечить использование perl-совместимых регулярных выражений и т.д. SYSTEM_ALIASES_FILE=/etc/aliases на: SYSTEM_ALIASES_FILE=/etc/mail/aliases Здесь мы указываем путь к файлу псевдонимов. # CHOWN_COMMAND=/usr/bin/chown на: CHOWN_COMMAND=/usr/sbin/chown Указываем правильный путь к команде chown. # SUPPORT_MOVE_FROZEN_MESSAGES=yes на: SUPPORT_MOVE_FROZEN_MESSAGES=yes Здесь мы включаем поддержку автоматического перемещения "frozen" сообщений из каталогов input и msglog в каталоги Finput и Fmsglog основного спула. После редактирования выполним: su-2.05a# make Для того чтобы понять, какие файлы будут установлены при установке Exim, выполним следующее. su-2.05a# cd su-2.05a# find /* >exim1 Возвращаемся в рабочий каталог и произведем установку. Для этого выполним: su-2.05a# cd /var/tmp/exim-4.20 su-2.05a# make install После того, как установка завершена, нужно создать символические ссылки. Для этого проделаем следующее: su-2.05a# ln -fs /usr/sbin/exim /usr/lib/sendmail su-2.05a# ln -fs /usr/sbin/exim /usr/sbin/sendmail su-2.05a# ln -fs /usr/sbin/exim /usr/bin/mailq su-2.05a# ln -fs /usr/sbin/exim /usr/bin/runq Теперь необходимо удалить из объектных файлов Exim'а таблицы имен и информацию о номерах строк. Для этого выполним: su-2.05a# strip /usr/sbin/exim* Повторим операцию, проделанную ранее до установки Exim'а, чтобы понять, какие файлы были установлены. Для этого выполним следующее: su-2.05a# cd su-2.05a# find /* >exim2 su-2.05a# diff exim1 exim2 >exim-inst Прежде чем приступить к конфигурированию Exim'а, нужно создасть базу данных, пользователя и соответсвующие таблицы. Для этого выполним: su-2.05a# mysql -u root mysql -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 to server version: 3.23.49-log Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> CREATE DATABASE exim; Query OK, 0 rows affected (0.00 sec) mysql> \q Bye Создаем пользователя sqlmail и присваиваем ему полные права на базу exim: su-2.05a# mysql -u root mysql -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 to server version: 3.23.49-log Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> GRANT ALL PRIVILEGES ON exim.* TO sqlmail@localhost -> IDENTIFIED BY 'my_password' WITH GRANT OPTION; Query OK, 0 rows affected (0.00 sec) mysql> \q Bye Когда база данных и пользователь созданы, нужно создать структуру таблиц и ввести данные о пользователях Для этого выполним: su-2.05a#mysql -u sqlmail exim -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 to server version: 3.23.49-log Type 'help;' or '\h' for help. Type '\c' to clear the buffer. Создаем таблицу aliases со следующей структурой: mysql> CREATE TABLE aliases ( -> local_part varchar(64) NOT NULL default '', -> domain varchar(128) NOT NULL default '', -> recipients text, -> PRIMARY KEY (local_part,domain)); Добавляем данные в таблицу aliases: INSERT INTO aliases VALUES ('postmaster','example.ru','ginger'); INSERT INTO aliases VALUES ('mailer-daemon','example.ru','postmaster'); INSERT INTO aliases VALUES ('root','example.ru','postmaster'); INSERT INTO aliases VALUES ('bin','example.ru','root'); INSERT INTO aliases VALUES ('daemon','example.ru','root'); INSERT INTO aliases VALUES ('sync','example.ru','root'); INSERT INTO aliases VALUES ('mail','example.ru','root'); INSERT INTO aliases VALUES ('pop','example.ru','root'); INSERT INTO aliases VALUES ('uucp','example.ru','root'); INSERT INTO aliases VALUES ('ftp','example.ru','root'); INSERT INTO aliases VALUES ('nobody','example.ru','root'); INSERT INTO aliases VALUES ('www','example.ru','root'); INSERT INTO aliases VALUES ('named','example.ru','root'); INSERT INTO aliases VALUES ('postgres','example.ru','root'); INSERT INTO aliases VALUES ('mysql','example.ru','root'); INSERT INTO aliases VALUES ('squid','example.ru','root'); INSERT INTO aliases VALUES ('drweb','example.ru','root'); INSERT INTO aliases VALUES ('operator','example.ru','root'); INSERT INTO aliases VALUES ('abuse','example.ru','root'); INSERT INTO aliases VALUES ('hostmaster','example.ru','root'); INSERT INTO aliases VALUES ('webmaster','example.ru','root'); Создаем таблицу domains со следующей структурой: mysql> CREATE TABLE domains ( -> domain varchar(128) NOT NULL default '', -> type enum('LOCAL','RELAY','VIRTUAL') default 'LOCAL', -> PRIMARY KEY (domain)); Добавляем данные в таблицу domains: INSERT INTO domains VALUES ('example.ru','LOCAL'); Создаем таблицу userforward, со следующей структурой: mysql> CREATE TABLE userforward ( -> local_part varchar(64) NOT NULL default '', -> domain varchar(128) NOT NULL default '', -> recipients text, -> PRIMARY KEY (local_part,domain)); Добавляем данные в таблицу userforward: INSERT INTO userforward VALUES ('noc','example.ru','ginger'); INSERT INTO userforward VALUES ('sysadmin','example.ru','ginger'); INSERT INTO userforward VALUES ('security','example.ru','ginger, victor'); Создаем таблицу users, со следующей структурой: mysql> CREATE TABLE users ( -> id varchar(64) NOT NULL default '', -> crypt varchar(64) NOT NULL default '', -> passwd varchar(64) NOT NULL default '', -> uid int(10) unsigned default '8', -> gid int(10) unsigned default '12', -> mbox_host varchar(128) NOT NULL default 'example.ru', -> shell varchar(32) binary default '/sbin/nologin', -> home varchar(128) binary default '/home/vmail/domains', -> quota tinyint(4) default '15', -> active enum('Y','N') default 'Y', -> PRIMARY KEY (id,mbox_host)); Добавляем пользователей в таблицу users: INSERT INTO users VALUES \ ('ginger',ENCRYPT('my-secret-pass'),'my-secret-pass',8,12, \ 'example.ru','/sbin/nologin','/home/vmail/domains/example.ru/ginger',15,'Y'); INSERT INTO users VALUES \ ('victor',ENCRYPT('12345'),'12345',8,12,'example.ru', \ '/sbin/nologin','/home/vmail/domains/example.ru/victor',15,'Y'); mysql> \q Bye Перейдем в каталог, где находится exim.conf, и проделаем следующее: su-2.05a# cd /etc/mail/ su-2.05a# cp exim.conf exim.conf-default su-2.05a# grep -v ^# exim.conf-default > exim.conf После этого приступим к редактированию файла конфигурации exim.conf. ### /etc/mail/exim.conf ### primary_hostname = smtp.example.ru domainlist local_domains = ${lookup mysql{SELECT domain FROM domains \ WHERE domain='${domain}' AND \ (type='LOCAL' OR type='VIRTUAL')}} domainlist relay_to_domains = ${lookup mysql{SELECT domain FROM domains \ WHERE domain='${domain}' AND type='RELAY'}} hostlist relay_from_hosts = 127.0.0.1 acl_smtp_rcpt = acl_check_rcpt acl_smtp_data = acl_check_data qualify_domain = example.ru log_selector = \ +all_parents \ +lost_incoming_connection \ +received_sender \ +received_recipients \ +smtp_confirmation \ +smtp_syntax_error \ +smtp_protocol_error \ -queue_run allow_domain_literals = false never_users = root:daemon:bin:sync:named host_lookup = * #trusted_users = mail:drweb rfc1413_hosts = * rfc1413_query_timeout = 0s ignore_bounce_errors_after = 30m timeout_frozen_after = 3d freeze_tell = postmaster auto_thaw = 1h #system_filter = /etc/mail/system-filter #message_body_visible = 5000 message_size_limit = 10M smtp_accept_max = 50 smtp_accept_max_per_connection = 50 smtp_connect_backlog = 50 smtp_accept_max_per_host = 25 split_spool_directory = true remote_max_parallel = 15 hide mysql_servers = localhost/exim/sqlmail/my_password begin acl acl_check_rcpt: accept hosts = : deny local_parts = ^.*[@%!/|] : ^\\. accept local_parts = postmaster domains = +local_domains require verify = sender deny message = host is listed in $dnslist_domain dnslists = sbl.spamhaus.org : \ relays.ordb.org : \ opm.blitzed.org : \ proxies.blackholes.easynet.nl accept domains = +local_domains endpass message = unknown user verify = recipient accept domains = +relay_to_domains endpass message = unrouteable address verify = recipient accept hosts = +relay_from_hosts accept authenticated = * deny message = relay not permitted acl_check_data: deny message = Go Away! Eat Your Spam Self! condition = ${if match{$message_body} \ {105[-_]*51[-_]*86|778[-_]*98[-_]*94} \ {yes}{no}} accept begin routers #drweb_router: # driver = accept # condition = ${if eq{$received_protocol}{drweb-scanned}{0}{1}} # transport = drweb # no_verify dnslookup: driver = dnslookup domains = ! +local_domains transport = remote_smtp ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8 no_more system_aliases: driver = redirect allow_fail allow_defer data = ${lookup mysql{SELECT recipients FROM aliases \ WHERE local_part='${local_part}' AND domain='${domain}'}} userforward: driver = redirect allow_fail allow_defer data = ${lookup mysql{SELECT recipients FROM userforward \ WHERE local_part='${local_part}' AND domain='${domain}'}} mysqluser: driver = accept condition = ${if eq{} {${lookup mysql{SELECT home FROM users \ WHERE id='${local_part}' AND mbox_host='${domain}' \ AND active='Y'}}}{no}{yes}} transport = mysql_delivery begin transports remote_smtp: driver = smtp mysql_delivery: driver = appendfile check_string = "" create_directory delivery_date_add directory = ${lookup mysql{SELECT CONCAT(home, "/Maildir") FROM users \ WHERE id='${local_part}' AND mbox_host='${domain}'}} directory_mode = 770 envelope_to_add group = mail maildir_format maildir_tag = ,S=$message_size message_prefix = "" message_suffix = "" mode = 0600 quota = ${lookup mysql{SELECT quota FROM users \ WHERE id='${local_part}' AND mbox_host='${domain}'}{${value}M}} quota_size_regex = S=(\d+)$ quota_warn_threshold = 75% return_path_add address_pipe: driver = pipe return_output address_file: driver = appendfile delivery_date_add envelope_to_add return_path_add address_reply: driver = autoreply #drweb: # driver = pipe # command = /opt/drweb/drweb-exim -f <${sender_address}> -- ${pipe_addresses} # current_directory = /var/drweb/spool # escape_string = # group = mail # headers_add = X-Virus-Scanned: by DrWeb for Unix # message_prefix = # message_suffix = # path = /bin:/sbin:/usr/bin:/usr/sbin:/opt/drweb # no_return_output # no_return_path_add # user = drweb begin retry * quota * * F,2h,15m; G,16h,1h,1.5; F,4d,6h begin rewrite begin authenticators auth_plain: driver = plaintext public_name = PLAIN server_condition = ${lookup mysql{SELECT id FROM users \ WHERE id = '${quote_mysql:${local_part:$2}}' \ AND mbox_host = '${quote_mysql:${domain:$2}}' \ AND passwd = '${quote_mysql:$3}' \ AND active = 'Y'}{yes}{no}} server_prompts = : server_set_id = $2 auth_login: driver = plaintext public_name = LOGIN server_condition = ${lookup mysql{SELECT id FROM users \ WHERE id = '${quote_mysql:${local_part:$1}}' \ AND mbox_host = '${quote_mysql:${domain:$1}}' \ AND passwd = '${quote_mysql:$2}' \ AND active = 'Y'}{yes}{no}} server_prompts = Username:: : Password:: server_set_id = $1 auth_cram_md5: driver = cram_md5 public_name = CRAM-MD5 server_secret = ${lookup mysql{SELECT passwd FROM users \ WHERE id = '${quote_mysql:${local_part:$1}}' \ AND mbox_host = '${quote_mysql:${domain:$1}}' \ AND active = 'Y'}{$value}fail} server_set_id = $1 ### /etc/mail/exim.conf ### где, * primary_hostname - полное имя хоста (FQDN); * domainlist local_domains - список доменов, для которых принимаем почту как для локальных; * domainlist relay_to_domains - список доменов, для которых разрешено принимать почту; * hostlist relay_from_hosts - список адресов (IP) с которых разрешено принимать почту; * acl_smtp_rcpt = acl_check_rcpt - вызов правил доступа при проверке адреса получателя; * acl_smtp_data = acl_check_data - вызов правил доступа при проверке пересылаемых данных; * qualify_domain - определение имени домена из FQDN сетевого узла или из адреса отправителя; * log_selector - указываем события, которые необходимо протоколировать; * host_lookup - поиск имени по адресу или наоборот; * auto_thaw - указываем время, по истечению которого будет возобновлена попытка доставить frozen сообщение(я); * message_size_limit - указываем максимальный размер сообщения; * smtp_accept_max - указываем максимально возможное число одновременных smtp сессий. После этого создаем файл запуска. Для этого проделаем следующее: su-2.05a# cat > /usr/local/etc/rc.d/exim.sh #!/bin/sh case "$1" in start) echo "starting Exim..." /usr/sbin/exim -bd -q15m ;; restart) echo "restarting Exim..." kill -HUP `cat /var/spool/mqueue/exim-daemon.pid` ;; stop) echo "stopping Exim..." kill -TERM `cat /var/spool/mqueue/exim-daemon.pid` ;; *) echo "Usage: $0 {start|stop|restart}" exit 1 ;; esac ^D su-2.05a# chmod +x /usr/local/etc/rc.d/exim.sh Теперь необходимо проверить правильность синтаксиса файла конфигурации /etc/mail/exim.conf. Для этого выполним: su-2.05a# exim -bV Exim version 4.20 #1 built 22-May-2003 14:22:20 Copyright (c) University of Cambridge 2003 Probably Berkeley DB version 1.8x (native mode) Support for: Perl OpenSSL Authenticators: cram_md5 plaintext Routers: accept dnslookup ipliteral manualroute queryprogram redirect Transports: appendfile/maildir/mbx autoreply pipe smtp Configuration file is /etc/mail/exim.conf Если ошибок не обнаружено, идем дальше. Теперь требуется проверить, будет ли осуществляться распознование сообщений для локальных пользователей. Для этого выполним: su-2.05a# exim -bt postmaster postmaster@example.ru router = mysqluser, transport = mysql_delivery Если ошибок не обнаружено, переходим к следующему шагу. Проверим, будет ли осуществляться распознование сообщений для внешних пользователей: su-2.05a# exim -bt someuser@msn.com someuser@msn.com router = dnslookup, transport = remote_smtp Если ошибок не обнаружено, идем дальше. Необходимо проверить, будет ли осуществляться доставка сообщений локальным пользователям, для этого выполним: su-2.05a# exim -v postmaster@example.ru From: ginger@example.ru To: postmaster@example.ru Subject: Testing Exim This is a test message. ^D LOG: MAIN <= root@example.ru U=root P=local S=303 su-2.05a# LOG: MAIN => ginger R=mysqluser T=mysql_delivery LOG: MAIN Completed ^C Если ошибок не обнаружено, идем дальше - проверим, будет ли осуществляться доставка сообщений внешним пользователям: su-2.05a# exim -v someuser@msn.com From: ginger@example.ru To: someuser@msn.com Subject: Testing Exim This is a test message. ^D LOG: MAIN <= root@example.ru U=root P=local S=303 su-2.05a# LOG: MAIN => someuser R=dnslookup T=remote_smtp LOG: MAIN Completed ^C На данном этапе мы убедились, что Exim правильно настроен и работает. Осталось проверить SMTP аутентификацию. Для этого сделаем следующее. Запускаем Exim: su-2.05a# /usr/local/etc/rc.d/exim.sh start Формируем строку PLAIN аутентификации (Netscape): su-2.05a# printf 'ginger@example.ru\0ginger@example.ru\0my-secret-pass' | mmencode Z2luZ2VyQGV4YW1wbGUucnUAZ2luZ2VyQGV4YW1wbGUucnUAbXktc2VjcmV0LXBhc3M= su-2.05a# telnet localhost 25 Trying 127.0.0.1... Connected to localhost.localdomain. Escape character is '^]'. 220 smtp.example.ru ESMTP Exim 4.20 Fri, 05 Sep 2003 13:59:25 +0400 ehlo localhost 250-smtp.example.ru Hello localhost.localdomain [127.0.0.1] 250-SIZE 10485760 250-PIPELINING 250-AUTH PLAIN LOGIN CRAM-MD5 250 HELP auth plain 334 Z2luZ2VyQGV4YW1wbGUucnUAZ2luZ2VyQGV4YW1wbGUucnUAbXktc2VjcmV0LXBhc3M= 235 Authentication succeeded quit 221 smtp.example.ru closing connection Connection closed by foreign host. Из примера видно, что все прошло успешно. Если у вас иной результат - еще раз внимательно прочитайте и ищите ошибку. Идем дальше - формируем строку LOGIN аутентификации (Outlook): su-2.05a# echo -n ginger@example.ru | mimencode -b Z2luZ2VyQGV4YW1wbGUucnU= su-2.05a# echo -n my-secret-pass | mimencode -b bXktc2VjcmV0LXBhc3M= su-2.05a# telnet localhost 25 Trying 127.0.0.1... Connected to localhost.localdomain. Escape character is '^]'. 220 smtp.example.ru ESMTP Exim 4.20 Fri, 05 Sep 2003 14:01:25 +0400 ehlo localhost 250-smtp.example.ru Hello localhost.localdomain [127.0.0.1] 250-SIZE 10485760 250-PIPELINING 250-AUTH PLAIN LOGIN CRAM-MD5 250 HELP auth login 334 VXNlcm5hbWU6 Z2luZ2VyQGV4YW1wbGUucnU= 334 UGFzc3dvcmQ6 bXktc2VjcmV0LXBhc3M= 235 Authentication succeeded quit 221 smtp.example.ru closing connection Connection closed by foreign host. Опять-таки видно, что все прошло успешно. Если вы получили иной результат - ищите ошибку. Далее проверяем CRAM-MD5 аутентификацию (The Bat!), для этого выполним: su-2.05a# telnet localhost 25 Trying 127.0.0.1... Connected to localhost.localdomain. Escape character is '^]'. 220 smtp.example.ru ESMTP Exim 4.20 Fri, 05 Sep 2003 14:09:15 +0400 ehlo localhost 250-smtp.example.ru Hello localhost.localdomain [127.0.0.1] 250-SIZE 10485760 250-PIPELINING 250-AUTH PLAIN LOGIN CRAM-MD5 250 HELP auth cram-md5 334 PDI2NDAyLjEwNTY2MTE1NTVAc210cC5leGFtcGxlLnJ1Pg== Z2luZ2VyQGV4YW1wbGUucnUgYjllN2Q1OTUxMGMxNjE0YzIwYjU4N2JkNmFkODk2MDI= 235 Authentication succeeded quit 221 smtp.example.ru closing connection Connection closed by foreign host. Как видите, и это прошло успешно, ищите ошибку, если получили иной результат. Теперь я опишу свои действия. После того, как была выполнена команда auth cram-md5, появилась строка вида: 334 PDI2NDAyLjEwNTY2MTE1NTVAc210cC5leGFtcGxlLnJ1Pg== После этого мы должны выполнить следующее: su-2.05a# perl -MMIME::Base64 -e 'print MIME::Base64::decode_base64(shift), "\n"' \ PDI2NDAyLjEwNTY2MTE1NTVAc210cC5leGFtcGxlLnJ1Pg== <26402.1056611555@smtp.example.ru.> Затем выполним: su-2.05a# perl -MMIME::Base64 -MDigest::HMAC_MD5 -e \ 'print MIME::Base64::encode_base64($ARGV[0] . " " . \ Digest::HMAC_MD5::hmac_md5_hex($ARGV[2], $ARGV[1]))' \ 'ginger@example.ru' 'my-secret-pass' '<26402.1056611555@smtp.example.ru.>' Z2luZ2VyQGV4YW1wbGUucnUgYjllN2Q1OTUxMGMxNjE0YzIwYjU4N2JkNmFkODk2MDI= Полученный результат и есть интересующая нас строка. На этом установку и настройку Exim, можно считать полностью завершенной. Настоятельно рекомендуем ознакомиться с темой FAQ по Exim MTA. http://forum.ru-board.com/topic.cgi?forum=8&topic=4514

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, chip (??), 15:33, 13/12/2004 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > FreeBSD-4.6

    в текст шибко не вдавался, но чем обоснован выбор сборки из исходных текстов ? а не через man ports ?

     
  • 1.2, BehemotH (??), 22:56, 04/02/2005 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Хммм... А какой был смысл включать поддержку TLS, если она в конечном итоге не настроена?
     
  • 1.3, SubGun (ok), 15:10, 15/07/2005 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Замечательная статья.
    Разобрано все до мельчайших подробностей, весьма понятно.

    to "chip":
    Поставить из портов может любой идиот, однако сборка из исходных текстов позволяет узнать с какими параметрами может собираться Exim, а это весьма важно. Ну и полезно конечно, зачем лишнего ставить?

     
  • 1.5, edwin (ok), 13:25, 29/10/2005 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Классная статья.
    Автору низкий поклон за его труд.
     
  • 1.6, basil (??), 22:12, 29/10/2005 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    самое прикольное что это писала девушка.
     
  • 1.7, комментарий (?), 04:22, 04/04/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    непонятно только где в экзиме логин пароль на mysql задавать
     
  • 1.8, freemer (?), 13:38, 18/05/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    ИМХО, мало подробностей, лучше было наверное побольше комментариев в конфиге сделать, а то такая статья способствует настройке exim-а методом copy-paste, а потом, если что не так, то настроивший его таким образом не сможет понять в чем дело. Конечно тот, кто поднимает почту copy-paste-ом сам виновать, но статья как вижу направленна именно на такой круг.
     
  • 1.9, sample (ok), 16:17, 09/11/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    статья хорошая, тема полностью раскрыта.
     
  • 1.10, Jewel (?), 10:13, 13/04/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Exim ведь почту не отдает пользователям. неполностью статья написана..
     
  • 1.11, borisen (?), 19:53, 04/09/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Поддерживаю BehemotH!!!
    Где же сам ТЛС ?? Зачембыло уделять ему внимание при сборке екзима, если при конфигурировании про него (ТЛС) успешно забыли???
     
  • 1.12, borisen (?), 21:03, 04/09/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Вот классная статейка по прикручиванию ТЛС к экзиму
    Кому интерестно читаем
    https://www.opennet.ru/base/net/exim_intro.txt.html

    ПС: автору зачет :)

     
  • 1.13, Kyshtynbai (ok), 14:12, 17/02/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Кусок про аутентификацию по CRAM-MD5 следует в отдельную статью оформит). Только прочитав его я, наконец, понял суть этого процесса :) .
     
  • 1.14, 7up (??), 16:37, 03/08/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    domainlist local_domains = ${lookup mysql{SELECT domain FROM domains WHERE domain='${domain}' AND (type='LOCAL' OR type='VIRTUAL')}}

    помоему это не совсем корректно т.к. $domain становится определена только в процессе smtp диалога, ну и это будет работать если в результате запроса вернется только 1 строка!
    если больше не сработает т.к. значения должны быть разделены разделителем (по умолчанию это : )

    на самом деле сам так хотел сделать!

    с ходу не получилось, но есть еще одна мысль!
    щас буду проверять!
    у кого нить есть еще мысли как заставить этот lookup строить корректный список?

     
  • 1.15, 7up (??), 07:52, 14/08/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    вот так работает!

    #доверенные узлы
    hostlist trusted_hosts          = ${lookup mysql{select sql_cache concat(name,' : ') from hosts where type = 2 and enabled = 1}}

    domainlist spam_domains         = ${lookup mysql{select sql_cache concat(name,' : ') from domains where type = 3}}

    domainlist local_domains        = ${lookup mysql{select sql_cache concat(name,' : ') from domains where type = 2}}

    и т.д.

     
     
  • 2.17, Роман (??), 02:53, 27/09/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Уж лучше тогда сразу: ${lookup mysql{SELECT group_concat(domain separator ' : ') FROM domains WHERE type = 'relay' AND enabled = '1' group by 'all'}}

    Это заставляет MySQL отдать всё в 1 строку и читать логи становиться куда приятнее.

     

  • 1.16, zilberstein (?), 16:43, 04/06/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Одно НО: Spamhaus -- организация, которая пытается ввести цензуру в интернете. Блокирует сети датацентров и целые страны.

    НЕ ИСПОЛЬЗУЙТЕ Spamhaus !

     

    игнорирование участников | лог модерирования

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру