Переход к предыдущей публикации screen - оставляем процессы в фоне и идем спать (пример файла .screenrc) Изменения в оформлении сайта Переход к следущей публикации

~/.forward - почему может не работать пользовательская переадресация почты

Четверг, 6 марта, 2008 12:25:38 EET

Исправления от 17 марта, 2009 00:38:45

~/.forward - почему может не работать пользовательская переадресация почты | .forward, aliases, FreeBSD, mail, mail forward, sendmail, smtp, unix, алиас, переадресация, перенаправление, почта, сервер Обычно, если почтовый smtp сервер на FreeBSD настроен с использованием аккаунтов системных пользователей (из /etc/passwd) и не используется какая-либо специфическая конфигурация вроде “почтовых каталогов” (maildir), то вся входящая почта отдельного пользователя складывается в “почтовый ящик” формата mbox, представляющий собой обычный текстовый файл. Письма в нем, вместе с RFC заголовками будут записываться последовательно один за одним. Располагается этот файл в каталоге /var/mail/. mbox файлы называются обычно так же, как и имя пользователя. Для каждого пользовательского mbox выставляются права “user:user -rw——-”, чтобы обычные пользователи могли получать доступ только к своему файлу почты.

Для того, чтобы почта не складывалась в mbox пользователя, а перенаправлялась на сторонний почтовый сервер, можно настроить переадресацию. Для sendmail (а на тестовом сервере у меня работает именно он) это делается через указание алиаса в файле /etc/mail/aliases. Но изменить в нем что-либо может только root. Обычный пользователь может сам изменить адрес перенаправления, создав в своем домашнем каталоге файл .forward и указав в нем всего лишь адрес электронной почты, куда нужно передать всю почту для этого пользователя. Можно указать несколько адресов, каждый из которых (если я не ошибаюсь) должен начинаться с новой строки.

Сегодня один товарищ (с аккаунтом на тестовом сервере) задал вопрос: “Почему не работает переадресация? В файле ~/.forward все прописано…”. Я посмотрел - действительно прописано. Гм… где-то я уже такое видел когда-то, но не сразу вспомнил в чем трабла (а записывать надо было :lol: ). Посмотрел в почтовый лог:

Mar  6 11:21:29 testers sendmail[58597]: m269Kxal058592: forward /home/serg/.forward.testers+: Group writable directory
Mar  6 11:21:29 testers sendmail[58597]: m269Kxal058592: forward /home/serg/.forward+: Group writable directory
Mar  6 11:21:29 testers sendmail[58597]: m269Kxal058592: forward /home/serg/.forward.testers: Group writable directory
Mar  6 11:21:29 testers sendmail[58597]: m269Kxal058592: forward /home/serg/.forward: Group writable directory

Ага. Ну конечно же:

# ls -la /home/ | grep serg
drwxrwx–x  12 serg serg 1024  6 мар 10:59 serg

Права на запись пользовательского каталога для группы почему-то мешают sendmail’у обрабатывать инструкции в файле ~/.forward

Возникает вопрос почему. Хотя мне это мало интересно (sendmail для штатного почтового сервера я не использую). Видать, че-то с вопросами безопасности связано…

 # chmod g-rw /home/serg

И переадресация ~/.forward работает.

Похожие публикации

Выделенные сервера дешевле обычного хостинга

Комментариев 3

Daemony 9 августа, 2008 10:48:21 EEST .:. ID #783 .:.

Andris, спасибо за интересный коммент. :) Не знал…

Andris 9 августа, 2008 10:38:29 EEST .:. ID #782 .:.

Да, и напоследок: опцией DontBlameSendmail в своём sendmail.cf можно заставить этот MTA прекратить подобную ругань. Подробнее, естественно, здесь.

Andris 9 августа, 2008 10:31:54 EEST .:. ID #781 .:.

Как я понимаю, корни всего этого растут отсюда. Выдержка:

When sendmail causes mail to be delivered to a program listed in a .forward or :include: file, that program is run with the group permissions possessed by the user who owns that .forward or :include: file. The file’s owner attribute is used to initialize the list of group permissions that are in force when the program is run. This list is determined by scanning the /etc/group file, NIS or NIS+ group maps, or other similar vendor-specific databases (such as netinfo on OpenStep).

It is possible for users to obtain group permissions they should not have by linking to a file that is owned by someone else, but on which they have group write permissions. By changing that file, users can acquire the group permissions of the owner of that file.

Exploitation is possible if the attacked user has a file that is group writable by the attacker on the same file system as either (a) the attacker’s home directory or (b) an :include: file that is referenced directly from the aliases file and is in a directory writable by the attacker. The first (.forward) attack only works against root. This attack does not give users root “owner” permissions, but does give them access to the groups that list root in /etc/group.

P.S. Спасибо за интересный блог и сайт! :)

Возник вопрос по этой теме, или есть что добавить? Говорите!

  1. Зарегистрированным пользователям вводить защитный код (captcha) не приходится.
  2. Загрузить свою аватарку Вы сможете, зарегистрировавшись на сервисе www.gravatar.com
Публикуя комментарий Вы подтверждаете, что ознакомились c Правилами и принимаете их!
HOMOSAPIENS ONLY! :)