Поштовий сервер: FreeBSD+Qmail

Доволі багато сплило часу з моменту написання мною статті про налаштування djbDNS. Сьогодні я вирішив сісти і написати щось подібне для поштового сервера. Звичайно, що це буде продукт того ж D. J. Bernstein – Qmail (http://www.qmail.org/). Що ж, у нас уже запущений DNS, усі деталі машини та використовуваних мною параметрі читайте в статті по djbDNS у рубриці МЕТА. Дана стаття базується на документі “Installing qmail under FreeBSD” Aaron Hill © 2001-2003, зокрема використано його скрипт запуску Qmail під FreeBSD. Менше слів! До роботи!

ІНСТАЛЯЦІЯ


У себе я збирав Qmail під FreeBSD як 4.x, так і 5.x. Проблем не виникало. Отже, у нас FreeBSD і поштовий сервер mail.me.lviv.ua (@me.lviv.ua). Якщо Ви поставили djbDNS, як я писав у статті, то Ви вже маєте ucspi-tcp, а ні, тоді:

[12:29] core:~# cd /usr/ports/sysutils/ucspi-tcp
[12:29] core:~# make all install clean

Інсталюємо Qmail

[12:34] core:~# cd /usr/ports/mail/qmail
[12:35] core:~# make enable-qmail WITH_QMAILQUEUE_PATCH=yes
WITH_BIG_TODO_PATCH=yes install clean

Інсталюємо checkpassword

[12:37] core:~# cd /usr/ports/security/checkpassword
[12:37] core:~# make all install clean

Знову ж таки, як бачите я ставлю Qmail та усе необхідне з портів. Наступний елемент необов’язковий, проте… Добавляємо мануали Qmail у перелік відомих системі man.

[12:41] core:~# echo “OPTIONAL_MANPATH /var/qmail/man” >> /etc/manpath.config
[12:42] core:~# makewhatis

КОНФІГУРАЦІЯ КОМПОНЕНТІВ QMAIL

Налаштовуємо доступ до нашого SMTP порта

[12:45] core:~# vi /etc/tcp.smtp

прописуємо наступне:
127.0.0.1:allow,RELAYCLIENT=””
192.168.0.:allow,RELAYCLIENT=””
:allow

Це дає можливість усім користувачам у нашій мережі 192.168.0.1 – 192.168.0.254 надсилати листи через даний SMTP. Тепер створюємо правила для tcpserver:

[12:49] core:~# /usr/local/bin/tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp

Перходимо у дерикторію /usr/share/skel, для створення необхідних Qmail файлів, щоб кожен новий користувач на даному сервері їх мав, для існуючих – доведеться проробити усе ручками в домашніх дерикторіях, або ж, як я це робив – написати скрипт 😉 Я думаю, що усі розуміють як воно має працювати! Наприклад, для себе (мій користувач уже існує в системі) я прописую те що для dot.cshrc в /home/admin/.cshrc і т.д. Якщо Ви проробляєте усе це під рутом (як це і має бути), то не забудьте пізніше змінити права доступу для вже існуючих користувачів. Наприклад, я створив собі

# /var/qmail/bin/maildirmake /home/admin/Maildir
тепер
# chown -R admin: /home/admin/Maildir
Але повернемось до налаштувань “з нуля”:

dot.cshrc
замініть рядок:
set mail = (/var/mail/$USER)
на:
#set mail = (/var/mail/$USER)
set mail = (~/Maildir/)
setenv MAIL ~/Mailbox
setenv MAILDIR ~/Maildir
setenv MAILTMP ~/Maildir/tmp/tmpfile
alias mail ‘/var/qmail/bin/maildir2mbox;/var/qmail/bin/qail’
alias pine ‘/var/qmail/bin/maildir2mbox;/var/qmail/bin/pinq’
alias elm ‘/var/qmail/bin/maildir2mbox;/var/qmail/bin/elq’

dot.shrc
додайте:
MAIL=~/Mailbox
MAILDIR=~/Maildir
MAILTMP=~/Maildir/tmp/tmpfile
export MAIL MAILDIR MAILTMP
alias mail=’/var/qmail/bin/maildir2mbox;/var/qmail/bin/qail’
alias pine=’/var/qmail/bin/maildir2mbox;/var/qmail/bin/pinq’
alias elm=’/var/qmail/bin/maildir2mbox;/var/qmail/bin/elq’

dot.qmail
Створіть dot.qmail і пропишіть:
./Maildir/

Maildir
Створюємо Maildir дерикторію:
[12:54] core:~# /var/qmail/bin/maildirmake /usr/share/skel/Maildir

Для запуску Qmail необхідно прописати наступні рядки в /etc/rc.conf:

# qmail options
qmail_smtp_enable=”YES”
qmail_pop_enable=”YES”
qmail_enable=”YES”

А тепер створюємо файл /var/qmail/rc:

#!/bin/sh

#
# This script starts and stops the qmail mail functions.
#

# Suck in the configuration variables.
if [ -r /etc/defaults/rc.conf ]; then
. /etc/defaults/rc.conf
source_rc_confs
elif [ -r /etc/rc.conf ]; then
. /etc/rc.conf
fi

case “$1″ in
start)
case ${qmail_smtp_enable} in
[Yy][Ee][Ss])
# Start the qmail smtp daemon
/usr/local/bin/tcpserver -H -R -c 255 -x /etc/tcp.smtp.cdb \
-u 82 -g 81 0 25 /var/qmail/bin/qmail-smtpd &
echo -n ” qmail-smtp”
;;
esac

case ${qmail_pop_enable} in
[Yy][Ee][Ss])
# Start the qmail pop daemon
/usr/local/bin/tcpserver -H -R -c 255 0 110 \
/var/qmail/bin/qmail-popup me.lviv.ua \
/usr/local/bin/checkpassword /var/qmail/bin/qmail-pop3d \
Maildir &
echo -n ” qmail-pop”
;;
esac

case ${qmail_enable} in
[Yy][Ee][Ss])
# Start qmail
exec env – PATH=”/var/qmail/bin:$PATH” \
qmail-start ./Maildir splogger qmail &
echo -n ” qmail”
;;
esac
;;
stop)
# Stop the smtp daemon
smtppid=`ps -axw | grep tcpserver | grep smtp | grep -v grep | awk ‘{ print $1 }’`
if [ “$smtppid” != “” ]; then
kill $smtppid
echo -n ” qmail-smtp”
fi

# Stop the pop daemon
poppid=`ps -axw | grep tcpserver | grep popup | grep -v grep | awk ‘{ print $1 }’`
if [ “$poppid” != “” ]; then
kill $poppid
echo -n ” qmail-pop”
fi

# Stop qmail
qmailpid=`ps -axw | grep qmail-send | grep -v grep | awk ‘{ print $1 }’`
if [ “$qmailpid” != “” ]; then
kill $qmailpid
echo -n ” qmail”
fi
;;
*)
echo “Usage: `basename $0` {start|stop}” >&2
;;
esac

exit 0

Як я вже писав, даний скрипт написав Aaron Hill.
i не забудьте у ньому замiнити me.lviv.ua на Ваш домен 😉 Наступне, робимо його запусковим

[12:58] core:~# chmod 750 /var/qmail/rc

Налаштовуємо основні файли для Qmail

me
[12:58] core:~# echo ‘me.lviv.ua’ > /var/qmail/control/me

rcpthosts
[12:59] core:~# echo ‘me.lviv.ua’ > /var/qmail/control/rcpthosts
[12:59] core:~# echo ‘.me.lviv.ua’ >> /var/qmail/control/rcpthosts

locals
[13:01] core:~# echo ‘core.me.lviv.ua’ > /var/qmail/control/locals
[13:01] core:~# echo ‘me.lviv.ua’ >> /var/qmail/control/locals

defaultdomain
[13:02] core:~# echo ‘me.lviv.ua’ >> /var/qmail/control/defaultdomain

plusdomain
[13:02] core:~# echo ‘lviv.ua’ >> /var/qmail/control/plusdomain

Перенаправлення повідомлень для root. Qmail не буде надсилати листи прямо для root, а пересилати їх адміністратору, тож пропишемо свій email:
[13:04] core:~# echo “admin@me.lviv.ua” >> /var/qmail/alias/.qmail-root

Тепер усі листи адресовані для root@me.lviv.ua підуть на admin@me.lviv.ua, так же Ви вожете прописати інші необхідні aliase (webmaster, postmaster…)

ЗАВЕРШЕННЯ КОНФІГУРАЦІЇ ТА ЗАПУСК QMAIL

Зупинемо sendmail (якщо він був запущений)

[13:06] core:~# killall sendmail
[13:06] core:~# rm /var/run/sendmail.pid

А тепер запускаємо Qmail:

[13:06] core:~# /usr/local/etc/rc.d/qmail.sh start

Перевіремо чи працює qmail і tcpserver:

[13:07] core:~# ps -ax | grep tcpserver
[13:08] core:~# ps -ax | grep qmail

PS: Qmail не працює /etc/mail/aliases файлом, тому усі необхідні альяси створюйте подібним шляхом, як я описував створення альясу для користувача root.

Це все, що я хотів написати, – у мене все працює! А у Вас? :@)

1 Comment on "Поштовий сервер: FreeBSD+Qmail"


  1. І знову стаття з моєї історії… Не раз я саме так налаштовував поштовий сервер 🙂 Проте, сьогодні я надаю перевагу postfix

Leave a Reply

Your email address will not be published. Required fields are marked *