Top News Search Software X Window System Documentation Support Home

Установка и конфигурирование sendmail

Первым делом утащим исходные тексты sendmail'а:

ВНИМАНИЕ! Если вы используете FreeBSD-STABLE и CVSup, то скорее всего у вас последняя версия sendmail'а, следовательно шаг инсталляции можно пропустить и сразу же заняться конфигурацией.

# mkdir /usr/local/src
# cd /usr/local/src
# ftp -i ftp.sendmail.org
Connected to ftp.sendmail.org.
220 pub1.pa.vix.com FTP server (Version wu-2.4(1) Fri Dec 29 06:15:49 GMT 1995) ready.
Name (ftp.sendmail.org:unknow): anonymous
331 Guest login ok, send your e-mail address as password.
Password: ozz@
230 Guest login ok, access restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd /pub/sendmail
ftp> bin
200 Type set to I.
ftp> hash
Hash mark printing on (1024 bytes/hash mark).
ftp> lcd /usr/local/src
Local directory now /usr/local/src
ftp> get sendmail.8.9.3.tar.gz
.........................
ftp> 
Распакуем:
# cd /usr/local/src
# tar xvfz sendmail.8.9.3.tar.gz
# cd /usr/local/src/sendmail-8.9.3
Соберем sendmail-8.9.3:
# cd /usr/local/src/sendmail-8.9.3
# make
Инсталлируем sendmail-8.9.3:
# cd /usr/local/src/sendmail-8.9.3
# make install
Пытаемся проделать самую сложную процедуру, а именно конфигурирование sendmail-8.9.3.
Для начала посмотрим те конфигурационные файлы, которые любезно поставляются в комплекте с sendmail-8.9.3.
В директории /usr/local/src/sendmail-8.9.3/cf/cf находится несколько конфигурационных файлов от sendmail, которыми мы и воспользуемся, для того чтобы написать свой конфигурационный файл на языке m4.
Затем этот файл мы пропустим через этот самый m4 и получим sendmail.cf.

Напишем файл конфигурации:

divert(-1)
#
# Copyright (c) 1998 Sendmail, Inc.  All rights reserved.
# Copyright (c) 1983 Eric P. Allman.  All rights reserved.
# Copyright (c) 1988, 1993
# The Regents of the University of California.  All rights reserved.
 
divert(0)dnl
VERSIONID(`@(#)domain_name.mc	1.0 (Berkeley) 5/30/98')
OSTYPE(bsd4.4)dnl
DOMAIN(generic)dnl
FEATURE(use_cw_file)dnl 
FEATURE(access_db, hash -o /etc/mail/access)dnl
FEATURE(virtusertable, hash -o /etc/virtusertable)dnl
FEATURE(mailertable, hash -o /etc/mailertable)dnl
FEATURE(relay_entire_domain)dnl
FEATURE(stickyhost)dnl
FEATURE(nouucp)
FEATURE(relay_based_on_MX)dnl
MAILER(local)dnl
MAILER(smtp)dnl
define(`confMAX_MESSAGE_SIZE',`1500000')
define(`confDELIVERY_MODE',`queue')
define(`confMAX_HOP',`20')
define(`confPRIVACY_FLAGS',`authwarnings,needmailhelo,needexpnhelo,needvrfyhelo,noexpn,restrictmailq,restrictqrun')
define(`confQUEUE_LA',`64')
define(`confREFUSE_LA',`128')
define(`confMAX_DAEMON_CHILDREN',`25')
define(`confCONNECTION_RATE_THROTTLE',`5')
define(`confDEF_CHAR_SET',`koi8-r')
define(`confNO_RCPT_ACTION',`add-apparently-to')
define(`confMAX_RCPTS_PER_MESSAGE',`25')
define(`confDONT_BLAME_SENDMAIL',`forwardfileingroupwritabledirpath')
define(`confSMTP_MAILER',`esmtp')
define(`confSMTP_LOGIN_MSG',`$j Sendmail $v/$Z; $b\n"Use of this system for the delivery of UCE (a.k.a. SPAM), or any other"\n"message without the express permission of the system owner is prohibited."\n"Use of this system for third party relaying is prohibited." ')
define(`LUSER_RELAY',`local:postmaster')dnl
define(`VIRTUSER_CLASS', `T')
define(`VIRTUSER_ERR_NOUSER', 1)
LOCAL_RULESETS
# Kludgey Melissa virus checking routine.
# Just need enough of a pattern to match.
# Instructional note:
# The format for the rule is
# RExactly the thing you want to quote
# No quote marks, no tabs, absolutely nothing in
# parentheses (like this, they're considered comments
# and will be removed before they get to the rules).
# After the exact thing, then a tab, and the $#error.
# Note, the $* matches anything, so it's useful for
# wildcarding. This also scans all messages with
# Subject: headers and invokes a rule, so there is
# a performance hit.

HSubject:	$>Check_Subject
D{MPat}Important Message From
D{MMsg}This message may contain the Melissa virus.
D{MPatILOVEYOU}ILOVEYOU
D{MMsgILOVEYOU}This message may contain the ILOVEYOU virus.

SCheck_Subject
R${MPat} $*	$#error $: 553 ${MMsg}
RRe: ${MPat} $*	$#error $: 553 ${MMsg}
R${MPatILOVEYOU} $*	$#error $: 553 ${MMsg}
RRe: ${MPatILOVEYOU} $*	$#error $: 553 ${MMsg}

ВНИМАНИЕ! Начиная со строки LOCAL RULESETS идёт кусок кода для защиты от вирусов Melissa и ILOVEYOU.
Подробнее о вирусе Melissa и методах защиты от него смотрите здесь
Подробнее о вирусе ILOVEYOU и методах защиты от него смотрите здесь

ВНИМАНИЕ! Для уменьшения спама внутри домена можно убрать строку:

FEATURE(relay_entire_domain)dnl
а вместо неё завести файл /etc/mail/relay-domains, в котором описать хосты (сети) с которых можно перенаправлять почту.

Сохраним этот файл как config.mc.
ВНИМАНИЕ! Для правильной идентификации укажите в строке VERSIONID имя вашего хоста в DNS или имя вашего домена!!!
Напишем небольшой скрипт:

#!/bin/csh
setenv CFDIR /usr/src/contrib/sendmail/cf
m4 -D_CF_DIR_=${CFDIR}/ ${CFDIR}/m4/cf.m4 config.mc > config.cf
Назовем этот скрипт m4.run
Этот скрипт нужен для того, что если вы в какой-то момент захотите изменить конфигурационный файл в формате m4 - то с помощью этого скрипта получите новый конфигурационный файл для sendmail'а.
Как вы наверное уже догадались - в файле config.cf будет лежать готовый конфигурационный файл для sendmail-8.9.3. Остается только переименовать его в sendmail.cf и положить на законное место (в каталог /etc) и перезапустить sendmail.

Если вас достают спаммеры - в sendmail-8.9.3 предусмотрены методы защиты.
Один из вариантов - создание файла /etc/mail/access.db из обычного текстового файла /etc/mail/access, содержащего такие строки:

hawaiitropicalflowers.com	REJECT
imarket2001.net			REJECT
209.101.230			REJECT
После того как вы создали файл, выполняем команды:
# cd /etc/mail
# /usr/sbin/makemap hash access < /etc/mail/access
Данная команда создаст таблицу /etc/mail/access.db, в которой в понятной (для sendmail'а) форме будут содержаться списки хостов, доменов, сетей и т.д. с которых ЗАПРЕЩЕНО принимать почту.