пятница, 13 февраля 2009 г.

Exim



Перед установкой провим /etc/make.conf
# директория с портами
PORTSDIR?= /usr/ports
# EXIM
.if ${.CURDIR} == ${PORTSDIR}/mail/exim
WITH_MYSQL= yes
LOG_FILE_PATH?= syslog
WITH_CONTENT_SCAN= yes
WITH_DEFAULT_CHARSET?= koi8-r
WITHOUT_IPV6= yes
WITH_BDB_VER?= 4
.endif
---------------------------------------
минус exim-a -необходимость правки Makefile для включения тех или иных возможностей exim-а.
---------------------------------------
ставим почтовик
cd /usr/ports/mail/exim
make install clean
---------------------------------------
ee /usr/local/etc/exim/configure # правим конфиг
---------------------------------------
ee /etc/rc.conf
exim_enable="YES" # включаем Exim
sendmail_enable="NONE" # отключаем sendmail
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"


/usr/local/etc/rc.d/exim start(restart, status)

ps -axj | grep exim # смотрим запустился ли
mailnull 40668 1 40668 40668 0 Ss ?? 0:00,02 /usr/local/sbin/exim -bd
root 41238 33870 41237 92267 2 R+ p1 0:00,00 grep exim
sockstat | grep exim # смотрим на каком порту весит
mailnull exim-4.62- 40668 3 tcp4 *:25 *:*

Также изменяем файл /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

netstat -na | grep -i listen - проверка портов что слушаються

Конфиг Exim-a

=====Здесь мы определяем макросы, описывающие различные пути========================

=====Тут мы описываем списки доменов================================================
-primary_hostname”= Exim должен знать официальное, полное имя вашего хоста, и тут можно его задать. Когда она не задана, exim использует системную функцию “uname()”, для получения имени хоста. Используется в EHLO
-domainlist local_domains = @ # @ Это специальная форма, вхождение которой означает имя локального хоста. Таким образом, если локалхост называется “test.kiev.ua”, то почта к любому пользователю типа “any.user@test.kiev.ua” будет доставляться локально, для остальных доменов почта доставляется по MX записям в DNS.
-domainlist relay_to_domains = # делаем список доменов с которых разрешены релеи Можно использовать символы подстановки, типа: = *.my.domen.su : !spam.my.domen.su : first.su # тогда пропускается всё, что похоже на *.my.domen.su, но от spam.my.domen.su релеится почта не будет.
-hostlist relay_from_hosts = localhost:127.0.0.0/8:192.168.0.0/16 # (перечисляем сети через двоеточие)Составляем список хостов с которых разрешён неавторизованый релей. Обычно в нём находятся локальные сети, и локалхост. ЛокалХост в двух видах на случай не понимания одного из них
=====проверки========================================================================
-acl_smtp_rcpt = acl_check_rcpt # контролирует, какие получатели разрешены для входящих сообщений - если конфигурация не содержит ACL для проверки получателей, то никакая почта по SMTP не принимается.
-acl_smtp_data = acl_check_data # разрешает проверку содержимого сообщения.Проверка на спам и вирусы
=====Здесь мы описываем наш антивирус================================================
av_scanner = clamd:127.0.0.1 3310
spamd_address = 127.0.0.1 783И spamassasin

-exim_user = mailnull # Настройки пользователя и группы по умолчанию
-exim_group = mail
# Никогда не осуществляем доставку под рутом - root должен быть алиасом на другого локального пользователя. Кстати, это _обязательное_ условие, заданное еще на этапе компиляции never_users = root
-never_users = root# Это определяет, что никакая доставка не должна осуществляться от имени пользователя “root”. Нормальное соглашение заключалось в том, что “root” - псевдоним системного администратора. Зта опция - охранная. Список пользователей, определённых как “never_users” - неполный, при компиляции в “Local/Makefile” есть опция “FIXED_NEVER_USERS”, задающая список, который не может быть отменён. Содержимое “never_users” добавляется к списку. По-умолчанию, “FIXED_NEVER_USERS” содержит пользователя “root”.
-host_lookup = * # задаёт, что exim должен проводить обратный поиск в DNS для всех входящих соединений, чтобы получить имя хоста. Это улучшает качество логов, но если вы чувствуете, что это обходиться слишком дорого, то вы можете удалить этот пункт вообще, или ограничить поиск хостами в соседних сетях. Отметьте, что не всегда можно найти имя хоста по его IP-адресу, поскольку не все обратные DNS-зоны обслуживаются, и некоторые DNS-сервера могут быть недоступны.


Проверям правильность синтаксиса файла конфигурации

alex# 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

Если ошибок не обнаружено, идем дальше.
Теперь требуется проверить, будет ли осуществляться распознование
сообщений для локальных пользователей. Для этого выполним:


alex# exim -bt postmaster
postmaster@example.ru
router = mysqluser, transport = mysql_delivery


Если ошибок не обнаружено, переходим к следующему шагу. Проверим,
будет ли осуществляться распознование сообщений для внешних
пользователей:


alex# exim -bt someuser@msn.com
someuser@msn.com
router = dnslookup, transport = remote_smtp


Если ошибок не обнаружено, идем дальше. Необходимо проверить, будет ли
осуществляться доставка сообщений локальным пользователям, для этого
выполним:


alex# 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


Если ошибок не обнаружено, идем дальше - проверим, будет ли
осуществляться доставка сообщений внешним пользователям:


alex# 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.


Из примера видно, что все прошло успешно. Если у вас иной результат -
еще раз внимательно прочитайте и ищите ошибку.





С чего начать
1)ставим Exim , провим конфиг в итоге почта ходит от нас в мир и к нам с мира
2)для того что бы роздать почту в локальную сеть и пользователи тоже могли отправлять ставим pop3d или courier- imap сервер, для доступа к почте пользователей, не имеющих локальных пользовательских учетных записей (виртуальные пользователи)
3)
4)