FreeBSD 10.0
domain.com – имя внешнего домена
В DNS:
A – mx.domain.com
MX – mx.domain.com
A – mail.domain.com – для настройки клиентов у пользователей
CNAME – webmail.domain.com – для web-доступа пользователей
localhost.localdomain – имя хоста
В DNS:
CNAME mail.localdomain
Конфигурацию поднимаем с работающего ранее Exim 4.73.
Отключаем Sendmail
В /etc/rc.conf
# DISABLE sendmail
sendmail_enable="NO"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"
Правим /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
На сервере должны быть:
mysql56-server
php55
php55-extensions
apache24
phpmyadmin
Переложил базу “еxim” в mysql из бэкапа, методом импорта. Успешно.
Переложил для Postfix-а config.inc.php. PostFix admin – поднялся! Ура!
Exim
Выбрать в конфигурации SPF!
Подложил конфиги из бэкапа. Заработало!
Исправил в routers.conf:
#-----------------------------------------
# Алиаc email
#-----------------------------------------
email_aliases:
driver = redirect
allow_fail
allow_defer
data = ${lookup mysql{SELECT `goto` FROM `alias` WHERE \
`address`='${quote_mysql:$local_part@$domain}' OR \
`address`='${quote_mysql:@$domain}'} \
}
#-----------------------------------------
# Алиасы для системных пользователей
#-----------------------------------------
system_aliases:
driver = redirect
data = ${lookup{$local_part}lsearch{/etc/aliases}}
Roundcube
Правим /usr/local/etc/apache24/httpd/conf
#DocumentRoot "/usr/local/www/apache22/data"
DocumentRoot "/usr/local/www/roundcube/"
Добавляем сonf-файл в Apache
root@v09:/usr/local # cat /usr/local/etc/apache24/Includes/roundcube.conf
Options None
AllowOverride Limit
Require all granted
Рестартим Apache.
Заходим на http://webmail
Получаем ошибку:
CONFIGURATION ERROR
config.inc.php was not found.
Please read the INSTALL instructions!
Идем http://webmail/installer/. Видим отличный интерфейс инсталлятора. Доводим до рабочего состояния.
Добавил в config.inc.php
$config['mime_types'] = '/usr/local/etc/apache24/mime.types';
Доустановил: /usr/ports/sysutils/php55-fileinfo
Но не отвечает IMAP, так как Dovecot еще не установлен.
При отправке писем из web-интерфейса проставлялся Return-path = [email protected]
Лечение: в файле /usr/local/www/roundcube/config/defaults.inc.php
// For example %n = mail.domain.tld, %t = domain.tld
$config['smtp_server'] = 'mail.domain.com';
Dovecot 2.2.13
cd /usr/ports/mail/dovecot2/
make install clean
# Обязательно выбираем MySQL, PGSQL - выключаем.
echo 'dovecot_enable="YES"' >> /etc/rc.conf
Скопировал содержимое /usr/local/etc/dovecot/ из бэкапа.
Стартуем:
root@v09:/usr/ports/mail/dovecot2 # /usr/local/etc/rc.d/dovecot start
Starting dovecot.
doveconf: Fatal: Error in configuration file /usr/local/etc/dovecot/conf.d/10-ssl.conf line 12: ssl_cert: Can't open file /etc/dovecot/ssl/dovecot.crt: No such file or directory
/usr/local/etc/rc.d/dovecot: WARNING: failed to start dovecot
Делаем сертификаты:
# редактируем
mcedit /usr/local/share/examples/dovecot/dovecot-openssl.cnf
# cоздаем папки
mkdir /etc/ssl/certs /etc/ssl/private
# делаем сертификаты
sh mkcert.sh
# даем права
chmod -R 0444 /etc/ssl/certs/
chmod -R 0400 /etc/ssl/private/
Стартуем:
root@v09:/usr/ports/mail/dovecot2 # /usr/local/etc/rc.d/dovecot start
Starting dovecot.
Can't open log file /var/log/dovecot/error.log: No such file or directory
/usr/local/etc/rc.d/dovecot: WARNING: failed to start dovecot
Делаем папку для логов:
mkdir /var/log/dovecot
chown dovecot:dovecot /var/log/dovecot/
Запускаем Dovecot. Запуск успешен.
Тестируем
Входим пользователем на webmail. Получаем ошибку.
Смотрим в логи: Could not connect to mail:143: php_network_getaddresses: getaddrinfo failed:
Исправляем, добавив в /etc/hosts
127.0.0.1 mail
Снова заходим. Другая ошибка:
# log Roundcube
IMAP Error: Login failed for [email protected] from 192.168.112.155. AUTHENTICATE PLAIN: * BYE Internal error occurred.
# log Dovecot
2014-10-15 12:26:00 imap: Error: user [email protected]: Relative home directory paths not supported: domain.com/test/
2014-10-15 12:26:00 imap: Error: Invalid user settings. Refer to server log for more information.
Знакомый ньюанс PostfixAmdin-a. Идем в бази и исправляем относительный путь к ящику на абсолютный.
По ходу выясняем что нет такой папки – делаем:
mkdir /var/mail/exim
chown mailnull:mail /var/mail/exim
Еще раз входим на webmail. Успешно.
Отправяем тестовое письмо в мир. Успешно.
А при попытке послать почту с локального хоста exim-a:
echo "test message body" | mail -v -s "subject test" [email protected]
tail /var/log/exim/main.log
remote host address is the local host: hostname (while verifying from host localhost (hostname) [127.0.0.1])
H=localhost (hostname) [127.0.0.1] sender verify defer for : remote host address is the local host
H=localhost (hostname) [127.0.0.1] F= temporarily rejected RCPT : Could not complete sender verify
Проверяем доставки локальному польвателю…. Неудачная.
exim -bt root
[email protected] is undeliverable: Unknown user or alias
Причина: не были установлены правильный значения в /etc/mail/mailer.conf + небыло алиаса [email protected].
Тестируем с соседнего MSExchange 2010
Не приходит почта с Exchange 2010, размещенного в соседнем LAN-e. В логе:
2014-10-15 17:45:54 H=(MX.EXTERNAL.DOMAIN) [192.168.112.59] F= temporarily rejected RCPT : host lookup deferred for reverse lookup check
Причина:
ОC не могла преобразовать 192.168.112.59 в DNS-имя.
Решение:
Настроить DNS сервер нашего LAN-а преобразование IP в DNS-имя работало, вот так:
host 192.168.112.59
59.112.168.192.in-addr.arpa domain name pointer MAILHOST.FIRMA.LOCAL.
SpamAssassin
/usr/ports/mail/p5-Mail-SpamAssassin – метрвый
/usr/ports/mail/spamassassin/ – правильный.
Расскоментировал строку в /usr/local/etc/exim/configure
spamd_address = 127.0.0.1 783
Добавил в конец/etc/syslog.conf
!spamd
*.* /var/log/spamd.log
Рестарт Exim-у, старт SpamAssassin-у.
Проверяем, смотря в логи.
Виже нечто такое:
2014-10-16 14:31:52 1XejHc-000HxY-9f SA: Debug: SAEximRunCond expand returned: '0'
2014-10-16 14:31:52 1XejHc-000HxY-9f SA: Action: Not running SA because SAEximRunCond expanded to false (Message-Id: 1XejHc-000HxY-9f). From (host=v09.domain.local [192.168.112.59]) for [email protected]
Понимаю, что есть какой-то еще конфиг. Нашелся /usr/local/etc/sa-exim.conf. В нем исправляю:
#SAEximDebug: 1
SAEximDebug: 0
# SAEximRunCond: 0
SAEximRunCond: 1
Рестартую Exim.
Получил в логе:
2014-10-16 14:56:59 1Xejfv-000I1Q-1S SA: Action: scanned but message isn't spam: score=-0.3 required=5.0 (scanned in 0/0 secs | Message-Id: [email protected]). From (host=mailhost.firma.local [192.168.112.59]) for [email protected]
Еще вижу в логе, что сканируется и исходящаяя почта