(Notes) UNIX (2004 год)

Как настроить QMAIL

В наиболее сокращенном варианте QMAIL ставится так:

ШАГ1. Сначала ставим QMAIL:
cd /usr/ports/mail/qmail ; Make Install check

В принципе, все описания, которые вы будете читать по QMAIL (включая мое) - это просто перевирание тех файлов помощи, которые вы уже установили на свой комп введенной выше командой. А для того, чтобы работала помощь, надо в /etc/manpath.config добавить строчку
MANDATORY_MANPATH /var/qmail/man


ШАГ2. Теперь делаем начальную конфигурацию QMAIL:
cd /var/qmail/configure ; /.config
после чего в /var/qmail/control появляется файл me в котором записано имя этого хоста, например,ns1.ensanos.ru.

Для того чтобы это сработало должен быть предварительно установлен DNS. В принципе me - это единственный настроечный файл, абсолютно необходимый для работы QMAIL. Полный же список файлов, управляющих QMAIL можно посмотреть по man 5 qmail-control.


ШАГ3.Далее выкусываем SENDMAIL:
=== в /etc/rc.conf -> sendmail_enable="NONE"

=== в /etc/mail/mailler.conf ->
# $FreeBSD: src/etc/mail/mailer.conf,v 1.3 2002/04/05 04:25:12 gshapiro Exp $
#
# Execute the "real" sendmail program, named /usr/libexec/sendmail/sendmail
#
sendmail /usr/qmail/bin/sendmail
send-mail /usr/qmail/bin/sendmail
mailq /usr/qmail/bin/qmail-gread
newaliases /usr/qmail/bin/newaliases
hoststat /usr/qmail/bin/qmail-tcpto
purgestat /usr/qmail/bin/qmail-tcpok

=== cd /usr/sbin
mv /usr/sbin/sendmail /usr/sbin/sendmail.old
ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail

=== cd /usr/libexec
mv sendmail sendmail.old
ln -s /var/qmail/bin/sendmail sendmail


ШАГ4. Создаем почтовые ящики пользователей:
/var/qmail/bin/maildirmake /usr/home/slawa
(предполагается, что со старым сендмайловским форматом почтового ящика MBOX мы больше не связываемся).


ШАГ5. В /usr/home/slawa файл .qmail с указанием расположения Maildir:
echo ./Maildir/ > ~/.qmail


ШАГ6. Устанавливаем переменные окружения (хотя в принципе этот шаг не является обязательным - минимальная конфигурация будет работать и без этого.
При условии, что интреплетатор по умолчанию csh - в .cshrc добавляются строки:
setenv MAILDIR $HOME/Maildir
setenv MAILTMP $HOME/Mailtmp
setenv MAIL $HOME/Mailbox

Если же у вас интерплетатор sh, то добавляем в .profile
MAILDIR=$HOME/Maildir; MAILTMP=$HOME/Mailtmp; MAIL=$HOME/Mailbox; export MAILDIR MAILTMP MAIL
И проверяем как установились переменные среды.


ШАГ7.Ставим Qmail в автозапуск (с новым форматом ящиков):
mkdir /var/qmail/rc
cp /var/qmail/boot/maildir /var/qmail/rc

или просто запускаем его:
/var/qmail/boot/maildir start

Если он запустился нормально, то в выводе ps -waux должны присутствовать строчки:

qmails 17051 0.0 0.1 1224 584 p2 I+ 3:58PM 0:00.10 qmail-send
qmaill 17052 0.0 0.1 1168 544 p2 I+ 3:58PM 0:00.04 splogger qmail
root 17053 0.0 0.1 1168 480 p2 I+ 3:58PM 0:00.03 qmail-lspawn ./Maildir/
qmailr 17054 0.0 0.1 1164 536 p2 I+ 3:58PM 0:00.01 qmail-rspawn
qmailq 17055 0.0 0.1 1160 496 p2 I+ 3:58PM 0:00.01 qmail-clean

Это состояние покоя. А если пойдет доставки, то процессы будут выглядеть вот так:

qmaill 17052 0.0 0.1 1168 544 p2 S+ 3:58PM 0:00.03 splogger qmail
root 17053 0.0 0.1 1168 480 p2 S+ 3:58PM 0:00.02 qmail-lspawn ./Maildir/
qmailr 17054 0.0 0.1 1164 536 p2 S+ 3:58PM 0:00.01 qmail-rspawn
qmailq 17055 0.0 0.1 1160 496 p2 S+ 3:58PM 0:00.01 qmail-clean
qmailr 17074 0.0 0.1 1192 620 p2 S+ 3:58PM 0:00.00 qmail-remote list.ru slawa@ns1.ensanos.ru sysadm2000@list.ru
qmailr 17079 0.0 0.1 1192 620 p2 S+ 3:58PM 0:00.00 qmail-remote list.ru slawa@ns1.ensanos.ru sysadm2000@list.ru
qmailr 17103 0.0 0.1 1192 620 p2 S+ 3:58PM 0:00.00 qmail-remote list.ru slawa@ns1.ensanos.ru sysadm2000@list.ru
qmailr 17106 0.0 0.1 1192 620 p2 S+ 3:58PM 0:00.00 qmail-remote list.ru root@ns1.ensanos.ru sysadm2000@list.ru
qmailr 17121 0.0 0.1 1192 616 p2 S+ 3:58PM 0:00.00 qmail-remote fromru.com kqqw@fromru.com


ШАГ8.Теперь можно попробовать прогнать первый тест локальной доставки по SMTP:

echo to: slawa | /var/qmail/bin/qmail-inject

Поскольку мы пока не заполняти файлы алиасов, доставка по некоторым адресам может пойти в /var/qmail/alias/Mailbox
Прочитать оттуда почту можно командой MAIL:

ns1# pwd; ls -l ; mail -v -f /var/qmail/alias/Mailbox
/var/qmail/alias
total 78
-rw-r--r-- 1 root qmail 0 Nov 5 18:01 .qmail-mailer-daemon
-rw-r--r-- 1 root qmail 0 Nov 5 18:01 .qmail-postmaster
-rw-r--r-- 1 root qmail 0 Nov 5 18:01 .qmail-root
-rw------- 1 alias qmail 79641 Nov 17 00:46 Mailbox
Mail version 8.1 6/6/93. Type ? for help.
"/var/qmail/alias/Mailbox": 6 messages 3 unread
1 root@ns1.ensanos.ru Tue Nov 16 03:01 29/675 "ns1.ensanos.ru security run output"
2 slawa@ns1.ensanos.ru Tue Nov 16 15:48 12/357 "slawa"
>U 3 MAILER-DAEMON@ns1.en Tue Nov 16 23:07 1221/63434 "failure notice"
& p1
Message 1:
From slawa@ns1.ensanos.ru Tue Nov 16 15:48:33 2004
Delivered-To: root@ns1.ensanos.ru
Date: 16 Nov 2004 15:48:33 -0000
From: slawa@ns1.ensanos.ru
To: root@ns1.ensanos.ru
Subject: slawa
& q
"/var/qmail/alias/Mailbox" complete

А вот если почта пошла в ящики формата Maildir, то мы увидим ее там:
# pwd; ls -l
/usr/home/slawa/Maildir/new
total 6
-rw------- 1 slawa slawa 881 Nov 23 15:58 1101225495.17094.ns1.ensanos.ru
-rw------- 1 slawa slawa 1399 Nov 23 15:58 1101225495.17115.ns1.ensanos.ru
-rw------- 1 slawa slawa 911 Nov 23 15:58 1101225495.17140.ns1.ensanos.ru

ШАГ9. Но чтобы читать почту из ящика формата Maildir (сохранять вложения и пр.), придется установить MUTT:
cd /usr/ports/mutt ; make install
и далее :
#mutt -f /home/slawa/Maildir

ШАГ10.На этом этапе важно проверить как работает журнал почты. Для нормальной работоспособности журнала надо проверить в /etc/syslog.conf наличие строчки mail.info (и если чего перезапустить syslog: kill -HUP), если же все нормально, то /var/log/maillog будет выглядет примерно так:
Nov 23 16:30:23 ns1 qmail: 1101227423.288356 new msg 245
Nov 23 16:30:23 ns1 qmail: 1101227423.288807 info msg 245: bytes 210 from qp 17541 uid 0
Nov 23 16:30:23 ns1 qmail: 1101227423.292213 starting delivery 124: msg 245 to local slawa@ns1.ensanos.ru
Nov 23 16:30:23 ns1 qmail: 1101227423.292506 status: local 1/10 remote 0/20
Nov 23 16:30:23 ns1 qmail: 1101227423.301444 delivery 124: success: did_1+0+0/
Nov 23 16:30:23 ns1 qmail: 1101227423.302002 status: local 0/10 remote 0/20
Nov 23 16:30:23 ns1 qmail: 1101227423.302253 end msg 245


ШАГ11.Теперь открываем SMTP-порт нашего почтовика во внешний мир:
# Example entry for the optional qmail MTA
# NOTE: This is no longer the correct way to handle incoming SMTP
# connections for qmail. Use tcpserver (http://cr.yp.to/ucspi-tcp.html)
# instead.
#
smtp stream tcp nowait qmaild /var/qmail/bin/tcp-env tcp-env /var/qmail/bin/qmail-smtpd
#

Как вы видите вместо такого простого вызова из inetd.conf автор QMAIL'а рекомендует использовать tcpserver. Но вопреки строгому предупреждению этот вариант все еще работоспособен. Подробнее man 1 tcp-env и man 8 qmail-smtpd.

В принципе, если вы не планируете использовать OUTLOOK, а будете отправлять и посылать почту только локально с помощью MUTT, то настройку можно считать законченной. Но если юзера должны коннектиться к почтовику извне с помощью OUTLOOK EXPRESS, то придется выполнить еще пару шагов.



ШАГ12.Поставим прогу проверки аутентификации:
cd /usr/ports/security/checkpassword ; make install

И проверяем qmail-popup вместе c аутентификацией
ns1# /var/qmail/bin/qmail-popup ns1.ensanos.ru /usr/local/bin/checkpassword id
+OK <2287.1100699552@ns1.ensanos.ru>
user root
+OK
pass ******
uid=0(root) gid=0(wheel) groups=0(wheel)

Чтобы вышеприведенная команда не казалась полным шаманством - наберите man qmail-popup.


ШАГ13. Теперь открываем POP3 порт в inetd.conf:
# example entry for the optional pop3 server
#
pop3 stream tcp nowait root /var/qmail/bin/qmail-popup qmail-popup ns1.ensanos.ru /usr/local/bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir
#
и пересчитываем inetd.conf: kill -HUP #процесса_ined

Теперь берите OUTLOOK и смело коннектитесь к вашему серверу - на тестовых почтовых адресах все должно работать.


ШАГ14. Для реальной работы необходимо назначить юзерам почтовые адреса, завести почтовые логины, алиасы, виртуальные почтовые домены и т.д... QMAIL позволяет назначать почтовые адреса аж пятью способами:

Помните, что введенную конфигурацию вы можете всегда посмотреть командой /var/qmail/bin/qmail-showctl. После ввода почтовых адресов начальную конфигурацию можно считать законченной.


И вот только после этого наконец-то начнется самая интересная часть - практическая работа с почтовиком: антиспам, антирелей, антивирусы, архивирование, закручивание гаек с помощью SSL, UCSPI-TCP, DAEMONTOOLS и пр... пр... пр...

Но это уже выходит за рамки этой моей короткой заметки...


Дополнительные сведения о QMAIL: Все вышеперечисленные ссылки посвящены собственно начальному конфигурирования QMAIL и трем пакетам, связанным с QMAIL. Если же вы хотите посмотреть имена всех 50-ти пакетов, связанных с QMAIL, введите что-нибудь типа:
cd /usr/ports; make search key=qmail

Comments ( )
Link to this page: //www.vb-net.com/hosting/qmail/index.htm
< THANKS ME>