>Я потер файл freebsd.submit.mc
>Не помню он каж был после установки Free
>Ну терь иногда выскакивает ошибочка про него
>Я не пойму что это за файл Зачем он нужен ?
>Вроде он не обязателен? Как снова написать его?
>Ну где то краем уха кое что слышал
>
>И еще в источниках пишут что при создании файла sendmail.cf можно еще
>использовать сценарий Built
>Короче его я не нашел Его терь нет или что?
читайте документацию по sendmail от FreeBSD.
Для создания файлов конфигурации sendmail: sendmail.cf и submit.cf,
используются файлы sendmail.mc и submit.mc - которые пишутся на
специальном макросном языке по определенным правилам, потом обрабатываются
препроцессором m4 и на выходе получается уже файл конфигурации который
понимает sendmail.
Итого:
- читаем документацию к sendmail
- общее правило для составления file.mc
(less /usr/src/contrib/sendmail/cf/README)
divert(-1)
# всякие копирайты
#....
# все что идет после divert(-1) не используется
# все что идет после divert(0) действует
#
divert(0)
VERSIONID(`<SCCS or RCS version id>') - макрос версии
OSTYPE(`hpux9')dnl - при построении будет использовать макрос hpux9
с используемыми в нем параметрами, для freebsd - вместо hpux9 указать:
freebsd4 или freebsd5 или freebsd6, зависит от версии, эти макросы OS
depend находятся в cf/ostype.
dnl - это комментарий, варианты использования
DOMAIN - необходимые настройки для domain
FEATURE - использование разнообразных возможностей feature
local macro definitions - локальные макросы, define
MAILER - настройки касающиеся mailer'ов
нижнее может быть опущено, или использовано для своих конкретных целей
LOCAL_CONFIG
LOCAL_RULE_*
LOCAL_RULESETS
после того как у нас готовы file_sendmail.mc и file_submit.mc,
для создания файлов конфигурации cf, прогоняем наши макросы через
препроцессор m4 (утилита m4), общий вид команды:
m4 -D_CF_DIR_=${CFDIR}/ ${CFDIR}/m4/cf.m4 file.mc > file.cf
где CFDIR - это директория /path/sendmail/cf
в случае использования системного sendmail во FreeBSD, это либо:
- /usr/share/sendmail/cf
либо при наличии sources можно использовать:
- /usr/src/contrib/sendmail/cf
если был установлен более свежий sendmail из портов:
- /usr/local/share/sendmail/cf
Чтобы не делать массу лишних телодвижений, в FreeBSD есть готовый
/etc/mail/Makefile в котором масса переменных и путей уже определены,
но некоторые можно переопределить под себя, задав их в /etc/make.conf,
например:
SENDMAIL_MC=/etc/mail/unix1.mc
SENDMAIL_SUBMIT_MC=/etc/mail/submit.mc
SENDMAIL_CF_DIR=/usr/local/share/sendmail/cf
что и как можно переопределить для удобства, читай /etc/mail/Makefile
простые примеры:
-------------------------- sendmail.mc ------------------------------
divert(-1)
# всякая ненужная фигня
#
divert(0)
VERSIONID(`$FreeBSD: lavr Exp $')
OSTYPE(freebsd5)
DOMAIN(generic)
FEATURE(always_add_domain)
FEATURE(access_db, `hash -o -T<TMPF> /etc/mail/access')
FEATURE(blacklist_recipients)
FEATURE(local_lmtp)
FEATURE(mailertable, `hash -o /etc/mail/mailertable')
FEATURE(virtusertable, `hash -o /etc/mail/virtusertable')
FEATURE(nouucp,reject)
FEATURE(`no_default_msa')
FEATURE(`masquerade_envelope')
FEATURE(stickyhost)dnl
FEATURE(`delay_checks')
HACK(require_rdns, `REJECT')
FEATURE(`relay_entire_domain')
dnl DNS based black hole lists
dnl --------------------------------
FEATURE(`dnsbl',`sbl.spamhaus.org',`Spam bloked - see http://www.spamhaus.org/')
FEATURE(`dnsbl',`list.dsbl.org',`Spam bloked - see http://dsbl.org/')
FEATURE(`dnsbl',`dnsbl.njabl.org',`Spam bloked - see http://njabl.org/')
FEATURE(`dnsbl',`cbl.abuseat.org',`Spam bloked - see http://cbl.abuseat.org/')
FEATURE(`dnsbl',`relays.ordb.org',`Spam bloked - see http://ordb.org/')
FEATURE(`dnsbl', `dul.ru',`Spam bloked - Use mail relays of your ISP')
dnl define(`SMART_HOST', `your.isp.mail.server')
dnl define(`SMART_HOST', `sunct0.jinr.ru')
dnl Uncomment the first line to change the location of the default
dnl /etc/mail/local-host-names and comment out the second line.
dnl define(`confCW_FILE', `-o /etc/mail/sendmail.cw')
define(`confCW_FILE', `-o /etc/mail/local-host-names')
DAEMON_OPTIONS(`Name=IPv4, Family=inet')
define(`confBIND_OPTS', `WorkAroundBrokenAAAA')
define(`confMAX_HEADERS_LENGTH',16384)
define(`confMAX_MIME_HEADER_LENGTH', `256/128')
define(`confNO_RCPT_ACTION', `add-to-undisclosed')
dnl DISABLE DSN, add "noreceipts" to confPRIVACY_FLAGS
define(`confPRIVACY_FLAGS', `authwarnings,noexpn,novrfy,noetrn')
define(`confSMTP_MAILER', `smtp8')
define(`confMAX_MESSAGE_SIZE', `50000')
define(`confSMTP_LOGIN_MSG',`JINR-Net Lavr-Antispam-MTA; "Non-authorized relayin
g DENIED." ')
define(`confMAX_RCPTS_PER_MESSAGE', `50')
dnl Enable Return-Receipt-To
dnl define(`confRRT_IMPLIES_DSN',`True')
dnl for Majordomo
dnl define(`ALIAS_FILE', `/etc/mail/aliases,/etc/mail/majordomo.aliases')
dnl for SMTP-AUTH
dnl The group needs to be mail in order to read the sasldb2 file
dnl define(`confRUN_AS_USER',`root:mail')dnl
dnl set SASL options
dnl TRUST_AUTH_MECH(`GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')
dnl define(`confAUTH_MECHANISMS', `GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')
dnl define(`confDEF_AUTH_INFO', `/etc/mail/auth-info')
dnl Milter for Amavisd-new
define(`MILTER',1)
INPUT_MAIL_FILTER(`milter-amavis',`S=local:/var/amavis/amavis-milter.sock,T=S:10
m;R:10m;E:10m')
MAILER(local)
MAILER(smtp)
-------------------------------- end of sendmail.mc ---------------------
------------------------------ submit.mc -----------------------------
divert(-1)
# лабуда
divert(0)dnl
VERSIONID(`$Id: submit.mc,v 8.6 2002/03/26 03:30:58 ca Exp $')
define(`confCF_VERSION', `Submit')dnl
define(`__OSTYPE__',`')dnl dirty hack to keep proto.m4 from complaining
define(`_USE_DECNET_SYNTAX_', `1')dnl support DECnet
define(`confTIME_ZONE', `USE_TZ')dnl
define(`confDONT_INIT_GROUPS', `True')dnl
define(`confBIND_OPTS', `WorkAroundBrokenAAAA')dnl
dnl
dnl If you use IPv6 only, change [127.0.0.1] to [IPv6:::1]
dnl FEATURE(`msp')dnl
FEATURE(`msp', `[127.0.0.1]')dnl
dnl To deliver all local mail to your mailhub, edit the last line of submit.mc:
dnl FEATURE(`msp','[mailhub.do.main]`)dnl
dnl disable SMTP AUTH for loopback interface
dnl DAEMON_OPTIONS(`Name=NoMTA, Addr=127.0.0.1, M=EA')
------------------------ end of submit.mc ----------------------------
# cd /etc/mail
выполняем вручную построение cf из mc:
# m4 -D_CF_DIR_=/usr/src/contrib/sendmail/cf/ /usr/src/contrib/sendmail/cf/m4/cf.m4 sendmail.mc > sendmail.cf
и тоже самое для submit
В случае FreeBSD, руками можно не делать таких команд, есть Makefile,
by default, если существуют файлы:
`hostname`.mc и `hostname`.submit.mc (hostname - команда), то
по команде make cf - будут использоваться указанные mc, иначе, если
не определены никакие переменные в /etc/make.conf - будут браться
freebsd.mc и freebsd.submit.mc
если они были случайно удалены, их копии можно взять из sources:
ls -la /usr/src/etc/sendmail/
Теперь что касается Build его можно использовать как для сборки
sendmail с определенными ключами и параметрами - site.config.m4,
так и для сборки cf, последнее неудобно и лучше собирать cf'ы как
расписано выше.
Глобально - все, ничего сложного.