Когда я использую sendmail V8 с файлом конфигурации
Sun, я получаю строки типа:
/etc/sendmail.cf: line 273: replacement $3 out of bounds
Рассматриваемая линия читается так: R$*<@$%y>$* $1<@$2.LOCAL>$3 user@ether
Что это значит? Как я могу исправить это?
V8 не признает Sun'овский "$%y" синтаксис, таким образом, как рассматривается в этом контексте, имеется только $1 и $2 (но не $3) в этой строке. Читайте Rick McCarty's документ "Converting Standard Sun Config Files to Sendmail Version 8", в contrib директории (файл "converting.sun.configs") самой последней версии дистрибутива sendmail для полного решения того, как сделать это.
Когда я использую sendmail V8 на Sun, я иногда получаю строки
типа:
/etc/sendmail.cf: line 445: bad ruleset 96 (50 max)
Что это значит? Как я могу исправить это?
Вы так или иначе пробуете запускать старый Sun sendmail (или sendmail.mx) с версией 8 файла конфигурации sendmail, который Sun sendmail не любит. Проверьте ваш /etc/rc.local, любые процедуры, которые были созданы, чтобы останавливать и перезапускать процессы sendmail, и т.д .... Удостовертесь, что вы переключили их все на использование нового sendmail. Чтобы сохранить эту проблему от каких-либо проявлений в дальнейшем, пробуйте следующее (удостоверитесь, что вы входите в систему как root):
mv /usr/lib/sendmail /usr/lib/sendmail.old
ln -s /usr/local/lib/sendmail.v8 /usr/lib/sendmail
mv /usr/lib/sendmail.mx /usr/lib/sendmail.mx.old
ln -s /usr/local/lib/sendmail.v8 /usr/lib/sendmail.mx
chmod 0000 /usr/lib/sendmail.old
chmod 0000 /usr/lib/sendmail.mx.old
Предполагается, конечно, что Вы установили sendmail V8 в /usr/local/lib/sendmail.v8.
При переходе от Solaris 2.4 к Solaris 2.5 ядро изменило свое название и находится теперь в /kernel/genunix вместо /kernel/unix, так что _PATH_UNIX в conf.h указывает на неправильное местоположение.
Если Вы не можете обновить до самого
последнего выпуска sendmail 8.8.z, лучшее, что
можно сделать - изменить _PATH_UNIX в conf.h (в solaris2 части) чтобы указать на
настраиваемый интерфейс /dev/ksyms, примерно так: # define _PATH_UNIX "/dev/ksyms"
Наиболее вероятная проблема - в ваших библиотеках резольвера (DNS, /etc/hosts, NIS, etc...). Старые библиотеки резольвера Sun (и Solaris?) распределили достаточный участок памяти только для пяти IP-адресов для каждого имени хоста, и если какая-либо программа когда-либо попадает на имя с более чем пятью IP-адресами, программа вызывает аварийную ситуацию.
Например, это предохранило бы Вас от посылки почты к CompuServe, с тех пор как (во время написания этой записи) они перечислили одиннадцать IP-адресов для mx1.compuserve.com (одно из имен сервера MX для compuserve.com).
Это коснется Вас, даже если Вы используете версию 8 sendmail, так как это - проблема в библиотеках резольвера, а не в sendmail непосредственно.
Вы должны или получить патчи к библиотекам резольвера от Sun, или самую последнюю версию BIND (см. Q2.12) и установить их библиотеки резольвера надлежащим образом. Из этих двух вариантов, установка BIND - немного большая работа, но это, как правило, даст Вам намного более современный код, который поможет Вам сопротивляться атакам на ваши системы, более способные программы для использования при обслуживании DNS (включая поддержку IPV6 и некоторых других особенностей) и некоторые очень полезные утилиты.
Много людей испытали проблемы компиляции на Solaris, с
компилятором, обычно жалующимся относительно tm_zone
или TopFrame
.
Solaris section
нашей страницы Compiling
Sendmail объясняет это.
С Vn/Berkeley
файлом конфигурации они идентичны.
Имеется несколько незначительных различий между 8. X с Vn/Berkeley
файлом конфигурации и 8. X+Sun с тем же самым файлом конфигурации, но строкой V
,
замененной на Vn/Sun
. Но большинство различий -
обратные трюки совместимости, необходимые для 8. X+Sun, чтобы поддержать старый V1/Sun
файл конфигурации.
Имеются три веб-страницы, которые обсуждают это подробно: Berkeley migration (от SMI-8.6 до 8. X), Sun migration (от SMI-8.6 до 8. X+Sun), и Differences (5 разделов, сравнивающие и противопоставляющие файлы конфигурации и бинарный код).
Когда я использую версию 8 sendmail на IBM RS/6000 выполняющем AIX, системный контроллер ресурса всегда сообщает о sendmail как "недействующий", даже в том случае, когда он фактически выполняется. Что является неправильным?
При выполнении как daemon sendmail отделяется от своего родительского процесса, вводя SRC в заблуждение, что sendmail вышел. Чтобы исправить это, используйте команды:
kill `head -1 /etc/sendmail.pid`
chssys -s sendmail -f 9 -n 15 -S -a "-d99.100"
# use "-d0.1" in sendmail 8.6.x
startsrc -s sendmail -a "-bd -q30m"
# your sendmail args may vary
Теперь SRC должен сообщать о правильном состоянии sendmail. Если Вы используете версию 8.6.x, используете "-d0.1" вместо "-d99.100" (параметры отладки, несколько измененные в версии 8.7). В 8.6.x побочный эффект опции "-d0.1" - те несколько строк вывода отладки будут напечатаны на системной консоли каждый раз при запуске sendmail.
Для получения дополнительной информации читайте вывод System Resource Controller, команды lssrc и chssys в онлайн AIX документации.
Когда я использую sendmail IBM на IBM RS/6000, выполняющем AIX, и пробую послать почту на некоторые узлы, оказывается, что я могу послать на некоторые из них и не могу на другие. Что является неправильным?
Имеются две возможные проблемы:
1) Ваша версия sendmail не сконфигурирована так, чтобы распознавать MX записи в DNS. Просмотрите ваш sendmail.cf в поиске " OK MX " или " OK ALL ". Старые конфигурации закомментировали эту строку, и это заставит попытки послать почту от Вас к некоторым узлам терпеть неудачу (потому что те узлы имеют MX-записи, но никаких A записей в их DNS для определенного FQDN домена, к которому вы пытаетесь отправлять).
Для получения дополнительной информации, см. comp.unix.aix FAQ ftp://rtfm.mit.edu/pub/usenet/news.answers/aix-faq/.
2) Имеется негатив, баг кэширования в AIX 3.2.5 с /usr/sbin/named выполняемыми программами, которые являются длиной менее чем 103000 байтов. Просите, чтобы ваш IBM представитель дал Вам PMP 3251 или самую современный патч, который исправляет эту проблему для вашей специфической конфигурации и версии OS.
IBM, в их бесконечной мудрости, предусматривает заголовок файла, который легко неправильно компилируется. Как следствие, структуре {} для запросов DNS неправильно распределена, и обработка MX будет выражать недовольство.
Исправление 1) обновите к 8.7.5 - это даст исправляющий кода для этой проблемы.
Исправление 2) Устанавите BIND4.9.4 библиотеки и файлы для включения и достигают Формирования файла. AIX, чтобы использовать их - я *think* они Получают Это Право (если не, по крайней мере это умрет в течение, компилируют скорее чем неудача сверхъестественно во время выполнения).
Исправление 3) Крэкните Makefile.AIX, чтобы передать -DBIT_ZERO_ON_LEFT, чтобы вызвать заголовки для использования прав #ifdefs.
Не редактируйте sendmail.cf с помощью linuxconf. Этот инструмент и его модуль "mailconf" разработаны и основаны на очень старых правилах, пригодных еще к версии 8.8.7. Вы получите много неисправностей, если все-таки сделаете это. Сначала удостоверитесь, что RPM sendmail-cf установлен. Тогда создайте ваш собственный myhost.mc файл в /usr/lib/sendmail-cf/cf:
% cd /usr/lib/sendmail-cf/cf% cp redhat.mc myhost.mc (Редактируйте myhost.mc)% m4 ../m4/cf.m4 myhost.mc > myhost.cf (Проверьте этот новый myhost.cf;как только это заведомо исправно, установите это:)(Если 8.9.x или ранее:)% cp myhost.cf /etc/sendmail.cf% chown root /etc/sendmail.cf(Если 8.10.x или позже:)% cp myhost.cf /etc/mail/sendmail.cf% chown root /etc/mail/sendmail.cfСм. /usr/doc/sendmail/README.cf (или только README) для изучения особенностей и подробных команд, как делать это.
5.3.2 - я сформировал sendmail.cf из sendmail.mc, и это работает до следующей перезагрузки машины. Что происходит ?
Дата: 15 июня, 2000Если Вы использовали модуль linuxconf "mailconf" только однажды, ваш sendmail.cf будет перезаписан при каждой перезагрузке, если будет видно, что sendmail.cf был изменен с помощью linuxconf. Решением будет удаление модуля mailconf из linuxconf. Запустите linuxconf, и идите к пункту
Control files and systems > Configure Linuxconf modules
Прокрутите до "Module path -> mailconf" и выключите кнопку "this module is active", затем щелкните "Accept" и "quit", чтобы выйти из linuxconf.Это отключит управление linuxconf's sendmail. Сформируйте sendmail.cf из sendmail.mc снова (см. 5.3.1), и перезапустите sendmail.
5.3.3 - Почему я не могу принимать почту на RedHat 7.1?
Дата: 3 мая, 2001
Модифицирован: 11 июня, 2001RedHat изменила главный принцип работы sendmail. Они решили, что большинство людей нуждается в клиент-ориентированной версии sendmail. В итоге он слушает только интерфейс localhost. Проверьте RH документацию на предмет того, как изменить это:
Удостоверитесь, что Вы установили пакет "sendmail-cf" на вашей системе - он должен быть в вашем дистрибутиве.
Если это так, проверьте файл "sendmail.mc" (вероятно, он находится в "/etc/mail"). Ищите строку
"DAEMON_OPTIONS"
и закомментируйте эту строку.Также известно, что RedHat 7.1 компонует sendmail с поддержкой tcpwrapper, и таким образом файл /etc/
hosts.deny
отклоняет всю внешнюю почту (точнее, все соединения с любым портом с указанных адресов -прим.перев.). ДобавлениеSendmail:ALL
к /etc/hosts.allow
решает для sendmail эту проблему.
Оглавление Sendmail FAQ