little_devil писал(а):Доброго времени суток!,помогите пожалуйста при выполнении команды m4 sendmail.mc > sendmail.cf,получаю ошибку :
Код: Выделить всё
*** WARNING: missing -T<TMPF> in argument of FEATURE(`access_db', hash -T<TMPF> -o /etc/mail/access.db)
содержимое файла sendmail.mc:
Код: Выделить всё
divert(-1)dnl
include(`/usr/share/sendmail-cf/m4/cf.m4')dnl
VERSIONID(`setup for linux')dnl
OSTYPE(`linux')dnl
define(`confDEF_USER_ID', ``8:12'')dnl
dnl define(`confAUTO_REBUILD')dnl
define(`confTO_CONNECT', `1m')dnl
define(`confTRY_NULL_MX_LIST', `True')dnl
define(`confDONT_PROBE_INTERFACES', `True')dnl
define(`PROCMAIL_MAILER_PATH', `/usr/bin/procmail')dnl
define(`ALIAS_FILE', `/etc/aliases')dnl
define(`STATUS_FILE', `/var/log/mail/statistics')dnl
define(`UUCP_MAILER_MAX', `2000000')dnl
define(`confUSERDB_SPEC', `/etc/mail/userdb.db')dnl
define(`confPRIVACY_FLAGS', `authwarnings,novrfy,noexpn,restrictqrun')dnl
define(`confAUTH_OPTIONS', `A y')dnl
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`confTO_IDENT', `0')dnl
FEATURE(`no_default_msa', `dnl')dnl
FEATURE(`smrsh', `/usr/sbin/smrsh')dnl
FEATURE(`mailertable', `hash -o /etc/mail/mailertable.db')dnl
FEATURE(`virtusertable', `hash -o /etc/mail/virtusertable.db')dnl
FEATURE(redirect)dnl
FEATURE(always_add_domain)dnl
FEATURE(use_cw_file)dnl
FEATURE(use_ct_file)dnl
FEATURE(local_procmail, `', `procmail -t -Y -a $h -d $u')dnl
FEATURE(`access_db', `hash -T<TMPF> -o /etc/mail/access.db')dnl
FEATURE(`blacklist_recipients')dnl
EXPOSED_USER(`root')dnl
DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl
FEATURE(`accept_unresolvable_domains')dnl
LOCAL_DOMAIN(`localhost.localdomain')dnl
MAILER(smtp)dnl
MAILER(procmail)dnl
в логах следующая информация :
Код: Выделить всё
Sep 28 20:11:12 moskow-ts3 sm-msp-queue[23994]: NOQUEUE: SYSERR(root): No local mailer defined
Sep 28 20:12:00 moskow-ts3 sendmail[24135]: NOQUEUE: SYSERR(apache): No local mailer defined
Sep 28 20:14:55 moskow-ts3 sendmail[24724]: NOQUEUE: SYSERR(root): /etc/mail/sendmail.cf: line 63: unknown configuration line "AEMON_OPTIONS(Port=smtp,Addr=127.0.0.1, Name=MTA)"
Sep 28 20:15:33 moskow-ts3 sendmail[24922]: NOQUEUE: SYSERR(root): /etc/mail/sendmail.cf: line 63: unknown configuration line "AEMON_OPTIONS(Port=smtp,Addr=127.0.0.1, Name=MTA)"
Sep 28 20:17:33 moskow-ts3 sendmail[25344]: starting daemon (8.14.7): SMTP+queueing@01:00:00
Sep 28 20:17:34 moskow-ts3 sm-msp-queue[25358]: NOQUEUE: SYSERR(root): No local mailer defined
Sep 28 20:17:58 moskow-ts3 sendmail[25416]: NOQUEUE: SYSERR(root): No local mailer defined
плохо все, сначала логи:
No local mailer defined - не определен локальный mailer, потому как Вы, вероятно хотите
использовать procmail, два варианта использования:
- как LDA -> FEATURE(local_procmail)
- как MAILER -> MAILER(procmail)
ну и разумеется можно И ТО И ДРУГОЕ, procmail будет и LDA и MAILER, однако определить
MAILER(local) нужно, у нас им будет procmail
sendmail.cf - строка 63, вместо DAEMON_OPTIONS -> m4 сгенерил AEMON_OPTIONS и в результате
никаких макроподстановок, sendmail.cf запорчен.
Это возможно из-за ошибок в sendmail.mc - неверные комментарии, незакрытые скобки или
`options' - непарные или неверно использованные, или неправильный парсинг последующих
опций после ошибочной строки.
Sorry, лень разбирать весь mc, явная ошибка:
FEATURE(access_db, `hash -o -T<TMPF> /etc/mail/access')
потом:
FEATURE(local_procmail, `', `procmail -t -Y -a $h -d $u') - очень сомнительно...
лучше использовать отдельно - local_procmail для задания procmail как LDA:
FEATURE(local_procmail)
и отдельно дефайны для задания пути к procmail и флагов (хотя все это должно быть определено
через OSTYPE по идее)
например (флаги правьте на свое усмотрение):
define(`confDEF_USER_ID',``8:12'')dnl
OSTYPE(`linux')dnl
...
dnl определяем где procmail
define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')dnl
dnl задаем флаги и аргументы для MAIL LOCAL, у нас им будет procmail, флаги и аргументы под себя
define(`LOCAL_MAILER_FLAGS', `ShPfn')dnl
define(`LOCAL_MAILER_ARGS', `procmail -a $h -d $u')dnl
...
...
dnl procmail у нас будет LDA, флаги и аргументы определены выше
FEATURE(`local_procmail')dnl
...
...
dnl завершаться должно так, определяем локальный mailer, smtp и mailer'ом у нас будет procmail
dnl порядок следования трех нижних строк СТРОГО не менять
MAILER(`local')dnl
MAILER(`smtp')dnl
MAILER(`procmail')dnl
использование препроцессора m4, можно такой скрипт:
Код: Выделить всё
#!/bin/sh
if [ $# -ne 2 ]; then
echo "Usage: do-cf name.mc name.cf"
exit 0
fi
#SENDMAIL_CF_DIR="/usr/share/sendmail/cf"
SENDMAIL_CF_DIR="/usr/src/contrib/sendmail/cf"
M4="/usr/bin/m4"
${M4} -D_CF_DIR_=${SENDMAIL_CF_DIR}/ ${SENDMAIL_CF_DIR}/m4/cf.m4 $1 > $2
echo "New Sendmail config for" $1 done $2
ибо m4 нужно определить где CF_DIR и макрос cf.m4, скрипт можно поправить под себя,
а полная команда будет такая
# m4 -D_CF_DIR_=/usr/share/sendmail-cf /usr/share/sendmail-cf/m4/cf.m4 test.mc > test.cf
где test.mc - наш mc из которого препроцессор сгенерить cf, вместо вывода на экран, направляем
его в файл
теперь вроде все разобрано, поправьте под себя LOCAL_MAILER_[FLAGS и ARGS]
ссылки:
https://www.sendmail.com/sm/open_source ... tures.html
http://linux.yaroslavl.ru/docs/conf/sec ... h15_1.html