Я работаю на Solaris 5.11, использую sendmail. Локальные имена пользователей имеют форму <буквы><цифры> (например, hn06511). Раньше мы использовали псевдонимы, чтобы указать на <имя пользователя>@olddomain.com.
<имя пользователя> <имя пользователя>@olddomain.com
Теперь есть новая схема адресов электронной почты и новый домен. Теперь адреса электронной почты имеют вид <имя>.<фамилия>@newdomain.com.
Поэтому я изменил псевдонимы на следующие:
<имя пользователя> <имя>.<фамилия>@newdomain.com
Это работает, однако <username>@olddomain.com больше не работает. Чтобы добавить оскорбления к ране, есть много скриптов с жестко закодированными адресами электронной почты в старом стиле.
Итак, я хочу изменить <username>@olddomain.com -> <firstname><lastname>@newdomain.com. Я подумал, что могу использовать virtusertables, чтобы сделать это, поэтому я создал virtusertable, который содержит:
@olddomain.com %1
Предположительно, это должно взять <anybody>@olddomain.com и направить его только на имя пользователя (%1). Я надеялся, что тогда псевдонимы, которые я определил, будут переводить <username> -> <firstname>.<lastname>@newdomain.com. Но насколько я могу судить, sendmail полностью игнорирует эту virtusertable и пытается доставить на <username>@olddomain.com и, конечно же, терпит неудачу.
AFAICT Я правильно отформатировал virtusertable и запустил makemap (должен ли я использовать dbm или hash? Я видел оба варианта). AFAICT Я вставил правильный FEATURE и выполнил make и убедился, что сгенерированный sendmail.cf находится в правильном месте. Я видел FEATURE, выраженный как
ВОЗМОЖНОСТЬ(
virtusertable',
dbm -o /etc/mail/virtusertable')
и
ФУНКЦИЯ(
virtusertable',
хэш -o /etc/mail/virtusertable')
Но ни то, ни другое не работает.
Какую отладочную или другую информацию я могу предоставить и попробовать?
Заранее спасибо.
решение1
Команды отладки virtusertable для пользователя root
Найдите @oldomain.com
запись в virtusertable
echo '/map virtusertable [email protected]' | sendmail -bt
Проверьте, проверяет ли sendmail virtusertable на наличие адресов электронной почты olddomain.com
echo '3,0 [email protected]' | sendmail -d60.5 -bt
-d60.5
отслеживает поиск карт (также поиск virtusertable).
Еще подсказки:
m4
ожидает еще одного цитированияFEATURE(virtusertable,`hash /etc/mail/virtusertable')
Не делайте virtusertable необязательным. Удалите
-o
изFEATURE
строки.
С-o
sendmail игнорирует отсутствующий virtusertable.Sendmail использует скомпилированную версию virtusertable. Используйте
makemap
для компиляции virtusertable.virtusertable используется только для локальных доменов электронной почты (
$=w
) и$={VirtHost}
доменов.Используйте команду ниже как root, чтобы получить оба списка доменов
echo '$=w' | sendmail -bt echo '$={VirtHost}' | sendmail -bt