Назад | Перейти на главную страницу

Почему файл sendmail.mc поддерживает записи, не отформатированные для синтаксиса m4?

Я недавно обнаружил, что /etc/mail/sendmail.mc поддерживает записи, которые не в синтаксисе m4. Например:

LOCAL_CONFIG
O CipherList=HIGH

Для меня это не имеет смысла, потому что почти все остальное, что по умолчанию в файле mc, имеет ожидаемый синтаксис (например, dnl define( )

Какие типы вещей требуют синтаксиса m4 в файле MC, а какие нет?

В конечном итоге Sendmail использует файл sendmail.cf. Такой синтаксис позволяет добавлять строки непосредственно в sendmail.cf без преобразования макросов. Раньше люди редактировали свои файлы sendmail.cf напрямую, а у нас не было файлов sendmail.mc.

Если вы посмотрите на файл sendmail.cf, который генерирует sendmail.mc (через m4), вы увидите много:

O variable=value

линий.

m4 это макропроцессор.

В sendmail.cf файл, который на самом деле использует Sendmail, имеет свой собственный уникальный формат, не имеющий ничего общего с m4, и людям чрезвычайно трудно с ним работать.

Скорее, m4 используется как препроцессор для генерировать в sendmail.cf файл из sendmail.mc файл. Макросы, которые вы бы использовали в sendmail.mc намного легче понять и скрывают большую часть сложности истинной конфигурации.