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

Первым делом утащим исходные тексты 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 "Use of this system for the delivery of UCE (a.k.a. SPAM), or any other" "message without the express permission of the system owner is prohibited." "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'а) форме будут содержаться списки хостов, доменов, сетей и т.д. с которых ЗАПРЕЩЕНО принимать почту.

Обновлено: 12.03.2015