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

Похоже, что Sendmail не читает virtusertable на Solaris 11

Я использую Solaris 5.11, использую sendmail. Локальные имена пользователей имеют вид <буквы> <числа> (например, hn06511). В прошлом мы использовали псевдонимы, чтобы указать на <username> @ olddomain.com.

<имя пользователя> <имя пользователя> @ olddomain.com

Теперь есть новая схема адресов электронной почты и новый домен. Теперь адреса электронной почты имеют вид <имя>. <Имя> @ новый домен.com.

Поэтому я изменил псевдонимы на:

<имя пользователя> <имя>. <имя> @ newdomain.com

Это работает, однако <username> @ olddomain.com больше не работает. Чтобы добавить оскорбления к травме, есть много скриптов с жестко запрограммированными адресами электронной почты в старом стиле.

Итак, я хочу изменить <username> @ olddomain.com -> <firstname> <lastname> @ newdomain.com. Я подумал, что могу использовать для этого virtusertables, поэтому создал виртуальный файл, содержащий:

@ olddomain.com% 1

Предположительно, это должно взять <anybody> @ olddomain.com и направить его только на имя пользователя (% 1). Я надеялся, что тогда определенные мной псевдонимы будут переводить <username> -> <firstname>. <lastname> @ newdomain.com. Но насколько я могу судить, sendmail полностью игнорирует этот виртуальный объект и пытается доставить его на <username> @ olddomain.com и, конечно же, терпит неудачу.

AFAICT я правильно сформировал virtusertable и запустил makemap (я должен использовать dbm или хеш? Я видел оба). AFAICT я ввел правильную ФУНКЦИЮ, сделал make и убедился, что сгенерированный sendmail.cf находится в нужном месте. Я видел FEATURE, выраженную как

ХАРАКТЕРНАЯ ЧЕРТА(virtusertable',dbm -o / etc / mail / virtusertable ')

и

ХАРАКТЕРНАЯ ЧЕРТА(virtusertable',хэш -o / etc / mail / virtusertable ')

Но ни то, ни другое не работает.

Какую отладку или другую информацию я могу предоставить и попробовать?

Заранее спасибо.

виртуальные команды отладки для пользователя root

Искать @oldomain.com запись в виртуальный

echo '/map virtusertable xxx@oldomain.com' | sendmail -bt

Проверьте, проверяет ли sendmail virtusertable для адресов электронной почты olddomain.com

echo '3,0 john.doe@olddomain.com' | sendmail -d60.5 -bt

-d60.5 отслеживает поиск по картам (а также виртуальный поиск).


Еще подсказки:

  1. m4 ожидает другого цитирования

    FEATURE(virtusertable,`hash /etc/mail/virtusertable')
    
  2. Не делайте virtusertable необязательным. удалять -o из FEATURE линия.
    С участием -o sendmail игнорирует отсутствующий файл virtusertable.

  3. Sendmail использует скомпилированную версию virtusertable. Использовать makemap для компиляции virtusertable.

  4. virtusertable используется только для локальных почтовых доменов ($=w) и $={VirtHost} домены.

    Используйте команду ниже как root, чтобы получить оба списка доменов

    echo '$=w' | sendmail -bt
    echo '$={VirtHost}' | sendmail -bt