Юзер, от имени которого мы настраиваем почту, должен входить в группу upas, потому что только этой группе и входящему в нее пользователю upas разрешено писать в системные файлы и каталоги почты. После настройки желательно удалить этого юзера из группы upas.
Конфигурационные файлы, которые нужно изменять:
/lib/ndb/local
/mail/lib/rewrite
/mail/lib/remotemail
/mail/lib/smtpd.conf
В файл /lib/ndb/local добавляем следующие строки:
auth=plan9.loc authdom=plan9.loc dom=loc
(эта строка указывает, что наша машина может использоваться как сервер аутентификации)
ipnet=loc ip=192.168.1.0 ipmask=255.255.255.0
ipgw=192.168.1.1 # адрес нашего гейта в локалке
dns=192.168.1.1 # адрес нашего DNS в локалке
smtp=адрес_почтового_гейта
auth=localhost
mx=адрес_почтового_гейта
(доменный суффикс, адрес и маска сети, в которую входит машина, адрес гейта, адрес DNS-сервера, адрес SMTP-сервера, адрес сервера аутентификации (если есть), адрес почтового гейта по умолчанию)
Содержимое файла /mail/lib/rewrite может быть взято из одного из шаблонов -- /mail/lib/rewrite.gateway или /mail/lib/rewrite.direct. И править содержимое нужно непосредственно в файле rewrite. Hо лучше всего объединить фрагменты обоих конфигов. Правила для локальной доставки почты берем из /mail/lib/rewrite.direct:
--------------------------------------------------
# deliver mail without a domain locally
local!"(.+)" >> /mail/box/\1/mbox
local!(.*) >> /mail/box/\1/mbox
--------------------------------------------------
...а все остальное -- из /mail/lib/rewrite.gateway:
--------------------------------------------------
# translate local aliases from /mail/lib/namefiles
\"(.+)\" translate "/bin/upas/aliasmail '\1'"
[^!@.]+ translate "/bin/upas/aliasmail '&'"
# append the local domain to addresses without a domain
local!"(.+)" alias \1@plan9.loc
local!(.*) alias \1@plan9.loc
# convert source domain address to a chain a@b@c@d...
@([^@!,]*):([^!@]*)@([^!]*) alias \2@\3@\1
@([^@!]*),@([^!@,]*):([^!@]*)@([^!]*) alias @\1:\3@\4@\2
# convert a chain a@b@c@d... to ...d!c!b!a
([^@]+)@([^@]+)@(.+) alias \2!\1@\3
([^@]+)@([^@]+) alias \2!\1
# send all mail to the gateway or mail server, $smtp, for delivery
([^!]*)!(.*) | "/mail/lib/qmail '\s' 'net!$smtp'" "'\2@\1'"
--------------------------------------------------
(в данном случае plan9.loc -- доменное имя нашей машины)
Потом нужно править файлы /mail/lib/remotemail и /mail/lib/smtpd.conf (там нужно прописать HАСТОЯЩИЕ доменные имена именно для ЭТОЙ машины и адреса сетей, в которые она входит).
В /mail/lib/remotemail правим строку после условия "case *":
fd=plan9.loc
(подставлен пример локального доменного имени машины)
В /mail/lib/smtpd.conf правим строки:
defaultdomain loc
(доменный суффикс нашей локальной сети по умолчанию)
ournets 192.168.0.0/16
(подставим реальный адрес локальной сети с маской)
ourdomains *.loc, *.loc2
(подставим реальные доменные суффиксы наших сетей)
Крайне рекомендуется в строке, прописанной по умолчанию ("norelay off"), изменить значение "off" на "on" -- нам не нужен открытый релей. Где-то так. По крайней мере, письма с локальной машины под Планом-9 успешно уходят.