LINUX.ORG.RU
ФорумAdmin

“Permission deniend” для content_filter для Постфикса

 


0

1

Создаю content_filter для Постфикса. Есть такой скрипт на питоне:

$ ls -al /home/main_user/test1.py
-rwxr-xr-x 1 vmail2 nobody /home/main_user/test1.py

Вот **/etc/postfix/master.cf**:


smtp      inet  n       -       n       -       -       smtpd 
  -o content_filter=filter1:dummy

# [........................]

filter1    unix  -       n       n       -       10      pipe
    flags=Rq user=vmail2 null_sender=
    argv=/home/main_user/test1.py -f ${sender} ${recipient}

Не работает из-за прав. Вот ошибка в логах.


fatal: pipe_command: execvp /home/main_user/test1.py Permission denied

**vmail2** - пользователь без никто :) Домашней директории нет у него:


$ id vmail2
uid=5002(vmail2) gid=5002(vmail2) groups=5002(vmail2)

Что не так? Почему и как лечить?

Перемещено a1batross из general



Последнее исправление: roman-voran (всего исправлений: 1)
Ответ на: комментарий от roman-voran

content_filter должен отдавать письмо постфиксу назад: либо локально либо через левый порт, на котором нет ограничений.

можно увидеть логи и скрипт?

constin ★★★★
()
Ответ на: комментарий от constin

Как отдавать? «Здравствуйте, я - питон-почтальон, вот вам ваше письмо назад?»

Логи - там success и sent

Скрипт - нагугли любой скрипт на питоне, который отправляет мыло.

roman-voran
() автор топика
Ответ на: комментарий от roman-voran

примерно такие

Aug 31 15:53:54 mail postfix/qmgr[3781]: 044944242D: from=<yyyy@yyyy.com>, size=1947, nrcpt=1 (queue active)
Aug 31 15:53:54 mail postfix/smtp[3799]: 84D3D42428: to=<xxxx@xxxx.com>, relay=localhost[127.0.0.1]:10026, delay=1, delays=0.55/0.01/0.04/0.4, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as 044944242D)
Aug 31 15:53:54 mail postfix/smtpd[3800]: disconnect from localhost[127.0.0.1]
Aug 31 15:53:54 mail postfix/qmgr[3781]: 84D3D42428: removed
Aug 31 15:53:54 mail postfix/virtual[3802]: 044944242D: to=<xxxx@pxxxx.com>, relay=virtual, delay=0.49, delays=0.4/0.05/0/0.04, dsn=2.0.0, status=sent (delivered to maildir)

postfix email-server perl
roman-voran
() автор топика
Ответ на: комментарий от roman-voran

лог

localhost postfix/smtpd[14393]: connect from localhost[127.0.0.1]
localhost postfix/smtpd[14393]: 3BBAF20947: client=localhost[127.0.0.1]
localhost postfix/cleanup[14397]: 3BBAF20947: info: header To: me@domain1.com from localhost[127.0.0.1]; from=<mememe@domain2.com> to=<me@domain1.com> proto=ESMTP helo=<[127.0.0.1]>
localhost postfix/cleanup[14397]: 3BBAF20947: info: header From: mememe@domain2.com from localhost[127.0.0.1]; from=<mememe@domain2.com> to=<me@domain1.com> proto=ESMTP helo=<[127.0.0.1]>
localhost postfix/cleanup[14397]: 3BBAF20947: info: header Subject: subj33455 from localhost[127.0.0.1]; from=<mememe@domain2.com> to=<me@domain1.com> proto=ESMTP helo=<[127.0.0.1]>
localhost postfix/cleanup[14397]: 3BBAF20947: message-id=<20191025081356.3BBAF20947@mail.my_main_email.com>
localhost postfix/qmgr[13199]: 3BBAF20947: from=<mememe@domain2.com>, size=1001, nrcpt=1 (queue active)
localhost postfix/smtpd[14393]: disconnect from localhost[127.0.0.1] ehlo=1 mail=1 rcpt=1 data=1 quit=1 commands=5
localhost postfix/pipe[14293]: 1D26320948: to=<me@domain1.com>, relay=filter1, delay=0.16, delays=0.01/0/0/0.16, dsn=2.0.0, status=sent (delivered via filter1 service)
localhost postfix/qmgr[13199]: 1D26320948: removed
roman-voran
() автор топика
Ответ на: комментарий от constin

Разве тут не будет бесконечного цикла?

Мыло пришло, и в content_filter оправляется новый мыл на другой мыл, но который обслуживается **тем же самым постифксом** на том же самом сервере?

roman-voran
() автор топика
Ответ на: комментарий от roman-voran

Разве тут не будет бесконечного цикла?

Будет, если отдавать на 25 порт, на котором весит фильтр.

Поэтому поднимают обычно дополнительно в master.cf 127.0.0.1:10025 ( те он работает только для локалхоста и не светит наружу) или сокет и на нем уже нет ограничений и фильтра

constin ★★★★
()
Последнее исправление: constin (всего исправлений: 2)
Ответ на: комментарий от roman-voran

localhost postfix/pipe[14293]: 1D26320948: to=<me@domain1.com>, relay=filter1, delay=0.16, delays=0.01/0/0/0.16, dsn=2.0.0, status=sent (delivered via filter1 service)

ну да, postfix отдал мыло фильтру и не получил его назад. Обычно ДАЛЕЕ в логах from localhost:10025 бла бла бла status=sent (delivered to docevot)

constin ★★★★
()
Ответ на: комментарий от constin

1. Что значит «отдавать»? Как?

Как и сказал, скрипт ничего не берёт, он просто отправляет новый email

roman-voran
() автор топика
Ответ на: комментарий от constin

что-то я ни хрена не пойму

1. без "-f" во всех агрументах *всегда* адрес получателя

2. с "-f" есть адрес отправителя, но я до него не могу добраться

то есть sys.argv[1] - дает "-f", a sys.argv[2] и sys.argv[3] дают всегда адрес получателя.

до адреса отправителя ни хрена не могу добраться

что за "-f", зачем она вообще?

roman-voran
() автор топика
Ответ на: комментарий от roman-voran

f ты САМ написал в команде. Значит ТВОЙ скрипт должен ее как-то отрабатывать.

Тут нет никакой магии. Есть скрипт, который в stdin принимает аргумерты, есть команда в конфига постфикса. Как пропишешь команду, так и будет. Это все вообще никак и ничем не отличается от того, как если бы ты просто запустил свой скприт в терминале типа ./test.py lala1 lala2 lala3. Так что можешь прямо так и тестировать.

constin ★★★★
()
Ответ на: комментарий от constin

Ок

3-ий раз спрашиваю «что значит отдавать письмо обратно постфиксу и как»? Где об этом говорится в документации?

roman-voran
() автор топика
Ответ на: комментарий от roman-voran

3-ий раз спрашиваю

Мне кажется, что вы взялись за непосильную для ваших знаний задачу.

Научитесь хотя бы гуглить.

Вот пример на баше:

https://www.linuxtopia.org/online_books/mail_systems/postfix_documentation/FI...

constin ★★★★
()
Последнее исправление: constin (всего исправлений: 2)
Ответ на: комментарий от roman-voran

Ещё раз говорю, что там нет какого-то API или сложностей. Вы отдаете так же как посылали бы письмо с командной строки. И принимаете, в общем, так же. Все просто до безобразия.

constin ★★★★
()
Ответ на: комментарий от constin

Мне кажется, что у вас с логикой немного тю-тю. Именно за задачи, которые непосильные, и надо браться.

roman-voran
() автор топика
Ответ на: комментарий от roman-voran

Надо браться за трудные, а не непосильные. Непосильную вы не сделаете и она у вас ещё и желание отобъет.

На этом я с вами прощаюсь.

constin ★★★★
()
Ответ на: комментарий от roman-voran

ну куда же вы, куда???

подальше от stackoverflow админов/кодеров, которые садятся бесплатно на шею, вместо того, чтобы думать.

constin ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.