У меня разные потребности в пересылке для разных доменов, и все они указывают на мой почтовый сервер:
user1@example.com foo@example.org
user2@example.com bar@example.net
@example.com mylocalaccount
Все это работает ... Однако некоторые из этих пользователей хотят использовать нотацию +, чтобы дать разным поставщикам разные адреса, например user1
+продавец@example.com
. И эта часть не работает - все такие электронные письма в конечном итоге доставляются в общий центр. mylocalaccount
вместо того, чтобы быть перенаправленным должным образом.
Как мне сделать user+foo@example.com
быть отправленным в тот же пункт назначения, что и user@example.com
?
Я пробовал добавлять записи вроде
user1+*@example.com foo+%2@example.org
но это не устранило проблему ...
Вот следы отладки:
% sendmail -d60.5 -bv g@example.com
map_lookup(dequote, me, %0=me) => NOT FOUND (0)
map_lookup(dequote, g, %0=g) => NOT FOUND (0)
map_lookup(virtuser, g@example.com, %0=g@example.com, %1=g) => gexample@example.net (0)
... работает.
% sendmail -d60.5 -bv g+meow@example.com
map_lookup(dequote, me, %0=me) => NOT FOUND (0)
map_lookup(dequote, g+meow, %0=g+meow) => NOT FOUND (0)
map_lookup(virtuser, g+meow@example.com, %0=g+meow@example.com, %1=g+meow) => NOT FOUND (0)
map_lookup(virtuser, @example.com, %0=@example.com, %1=g+meow) => me (0)
map_lookup(dequote, me, %0=me) => NOT FOUND (0)
map_lookup(user, me, %0=me) => me<> (0)
g+meow@example.com... deliverable: mailer local, user me
... не работает - приходит на всеохватывающий локальный аккаунт "я".
Если вы хотите, чтобы виртуальный сервер перенаправлял с + сохранением деталей затем попробуйте:
# use %2 if you want to strip EMPTY +detail (user+@example.net)
user1@example.com foo%3@example.org
Процедура отладки
Как root выполнить sendmail -d60.5 -bv user1+x@example.net
.
Он должен отслеживать поиск по карте, включая виртуальный поиск по карте.
Пытаться sendmail -d21.12 -d60.5 -bv user1+x@example.net
if + detail удаляется перед виртуальным поиском.
user1+detail@example.com
по умолчанию должен заставить sendmail искать следующие виртуальные записи:
user+@example.com (плюс присутствует, но деталь пуста) выполняет поиск 1 + 3 + 4 + 6 + 7
user@example.com (нет + детали присутствуют) поиск по condutcs 4 + 7
Кажется, что +
отсутствует в OperatorChars
в твоем sendmail.cf
. Это делает R
линии в sedmail.cf
увидеть один токен user+detail
вместо трех жетонов user
+
detail
.
sendmail.cf
генерируется из sendmail.mc
должен установите OperatorChars на .:%@!^/[]+
по умолчанию в соответствии с книга летучих мышей. Его можно изменить в файле MC, указав confOPERATORS
.
Проверьте, что сообщает grep OperatorChars /etc/mail/sendmail.cf