[postfix] pipe alias permission denied

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
12 messages Options
Reply | Threaded
Open this post in threaded view
|

[postfix] pipe alias permission denied

Carsten-2
Hallo zusammen,
ich möchte unter Verwendung einer aliases pipe ein PHP-Script triggern,
welches eine eingehende Mail verarbeitet, und bekomme ein "permission
denied", sobald ein "require_once" getriggert wird (php interpreter).

Verwendete Software: Horde Groupware -> Modul "Whups" (Tickettracking)
-> "whups-mail-filter"
Der gesamte Vorgang ist schon sehr kleinteilig durch die Horde
Mailingliste gegangen, weil ich zunächst von einem Fehler dort ausging.
Hier der letzte Teil des Troubleshootings:

In der main.cf habe ich den Wert "default_privs = postfix-pipe" gesetzt.
Den Benutzer habe ich angelegt.
Die Webanwendung residiert unter /var/www/horde
Die fragliche Datei (require_once) unter
/var/www/horde/whups/lib/Application.php
Ab ../horde/.. gilt: 750 www-data:www-horde
Die Benutzer "postfix" und "postfix-pipe" sind Mitglieder der Gruppe
"www-horde".
Die /etc/aliases sieht so aus:
## WHUPS queue links
whups:   "|/usr/bin/whups-mail-filter -g -a carsten@[mydn.tld]e -Q 5"

In der Datei "/usr/bin/whups-mail-filter" habe ich zu Debuggingzwecken
diese Zeilen am Anfang eingefügt
$shellex = shell_exec("logger INFO whoami: $(whoami)");
$shellex = shell_exec("logger INFO who am i: $(who am i)");
$shellex = shell_exec("touch /tmp/hallowelt.ini");

Für das weitere Debugging habe ich eine Datei "testmail" angelegt mit
diesem Inhalt:
######################
From: root@derdapp001.[mydn.tld]
To: whups@[mydn.tld]
subject: Monitoring: Testticket

Hello World

#######################
Jetzt kann ich mit dem Befehl
"sudo -u postfix-pipe cat testmail|/usr/bin/whups-mail-filter -g -a
carsten@[mydn.tld] -Q 5"
den Vorgang auf der Kommandozeile testen und bekomme im Whups Ticket
System mein gewünschtes Ticket.
Nun gehe ich auf ein drittes System und sende von dort die "scharfe"
E-Mail -also jetzt triggere ich den postfix:
#####################
root@derdapp001 ~ # sendmail whups@[mydn.tld]
subject: monitoring: testticket

Hallo welt

[ctrl]+d
#######################
Jetzt bekomme ich im syslog des mail server diesen output:
#########################
##
Mar 12 13:35:27 derdapp004 logger: INFO whoami: postfix-pipe
Mar 12 13:35:27 derdapp004 logger: INFO who am i: <=Anmerkung: leer:
kein "parent user"
Mar 12 13:35:27 derdapp004 postfix/local[16770]: BE46441CCB:
to=<whups@localhost>, orig_to=<whups@[mydn.tld]>, relay=local,
delay=0.95, delays=0.02/0.01/0/0.92, dsn=5.3.0, status=bounced (Command
died with status 255: "/usr/bin/whups-mail-filter -g -a
carsten@[mydn.tld] -Q 5". Command output: PHP Warning:
require_once(/var/www/horde/whups/lib/Application.php): failed to open
stream: Permission denied in /usr/bin/whups-mail-filter on line 77 PHP
Fatal error:  require_once(): Failed opening required
'/var/www/horde/whups/lib/Application.php'
(include_path='.:/usr/share/php:/usr/share/pear') in
/usr/bin/whups-mail-filter on line 77 )
Mar 12 13:35:27 derdapp004 postfix/cleanup[16769]: B13E641CD6:
message-id=<20180312123527.B13E641CD6@[mydn.tld]>
Mar 12 13:35:27 derdapp004 postfix/bounce[16774]: BE46441CCB: sender
non-delivery notification: B13E641CD6
Mar 12 13:35:27 derdapp004 postfix/qmgr[16757]: B13E641CD6: from=<>,
size=3250, nrcpt=1 (queue active)
Mar 12 13:35:27 derdapp004 postfix/qmgr[16757]: BE46441CCB: removed
Mar 12 13:35:27 derdapp004 dovecot: lda(no-reply@[mydn.tld]):
msgid=<20180312123527.B13E641CD6@[mydn.tld]>: saved mail to INBOX
Mar 12 13:35:27 derdapp004 postfix/pipe[16777]: B13E641CD6:
to=<no-reply@[mydn.tld]>, orig_to=<root@[mydn.tld]>, relay=dovecot,
delay=0.14, delays=0.02/0.01/0/0.12, dsn=2.0.0, status=sent (delivered
via dovecot service)
Mar 12 13:35:27 derdapp004 postfix/qmgr[16757]: B13E641CD6: removed
##
############################
Aus dem "touch" entsteht diese Datei:
#################
##
ll /tmp/hallo*
-rw------- 1 postfix-pipe postfix-pipe      0 Mar 12 13:35 hallowelt.ini
##
#################
Wie zu sehen ist, funktioniert der Aufruf des "require_once" in der
whups-mail-filter auf die Application.php nicht.
Es scheint das System nicht zu interessieren, welcher Benutzer dort
hinterlegt ist.
Alle offensichtlichen Zeichen, zeigen klar, daß der Benutzer
"postfix-pipe" Verwendung findet.
In der Kommandozeile hat dieser auch ordenlichen Zugriff. Nur aus dem
Postfix heraus, klappt es nicht.
Wenn ich ein 755 auf das horde-verzeichnis gebe -also "other" =
"read&execute" gebe, so funktioniert es.
Das kann aber wohl nicht als ernsthafte Lösung gesehen werden, oder?

Ich habe noch zwei straces auf den Process.
Hier der output, wenn ich aus dem postfix komme:
####################
###
[...snip...]
gettimeofday({1520811096, 605233}, NULL) = 0
lstat64("/var/www/horde/whups/lib/Application.php", 0xbec64008) = -1
EACCES (Permission denied)
gettimeofday({1520811096, 605766}, NULL) = 0
lstat64("/var/www/horde/whups/lib/Application.php", 0xbec63f18) = -1
EACCES (Permission denied)
gettimeofday({1520811096, 606180}, NULL) = 0
lstat64("/var/www/horde/whups/lib/Application.php", 0xbec65fe0) = -1
EACCES (Permission denied)
lstat64("/var/www/horde/whups/lib", 0xbec65ee0) = -1 EACCES (Permission
denied)
lstat64("/var/www/horde/whups", 0xbec65df0) = -1 EACCES (Permission denied)
lstat64("/var/www/horde", {st_mode=S_IFDIR|0770, st_size=4096, ...}) = 0
lstat64("/var/www", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat64("/var", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
open("/var/www/horde/whups/lib/Application.php", O_RDONLY|O_LARGEFILE) =
-1 EACCES (Permission denied)
[...snip...]
###
####################
und der gleiche Teil, wenn ich aus der Kommandozeile per "sudo -u" komme:
####################
###
[...snip...]
ettimeofday({1520812051, 622266}, NULL) = 0
lstat64("/var/www/horde/whups/lib/Application.php",
{st_mode=S_IFREG|0770, st_size=9232, ...}) = 0
lstat64("/var/www/horde/whups/lib", {st_mode=S_IFDIR|0770, st_size=4096,
...}) = 0
lstat64("/var/www/horde/whups", {st_mode=S_IFDIR|0770, st_size=4096,
...}) = 0
lstat64("/var/www/horde", {st_mode=S_IFDIR|0770, st_size=4096, ...}) = 0
lstat64("/var/www", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat64("/var", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
gettimeofday({1520812051, 624126}, NULL) = 0
open("/var/www/horde/whups/lib/Application.php", O_RDONLY|O_LARGEFILE) = 4
[...snip...]
###
####################

Wer hat hier eine Idee, was die Ursache ist? Übersehe ich noch etwas?
Welche Debug Information kann ich noch liefern?
Gruss
Carsten
Reply | Threaded
Open this post in threaded view
|

Re: [postfix] pipe alias permission denied

J. Fahrner
Welche user/group und permissions haben denn diese beiden Verzeichnisse?

lstat64("/var/www/horde/whups/lib", 0xbec65ee0) = -1 EACCES (Permission
denied)
lstat64("/var/www/horde/whups", 0xbec65df0) = -1 EACCES (Permission
denied)

Am 2018-03-12 13:59, schrieb Carsten:

> Hallo zusammen,
> ich möchte unter Verwendung einer aliases pipe ein PHP-Script
> triggern, welches eine eingehende Mail verarbeitet, und bekomme ein
> "permission denied", sobald ein "require_once" getriggert wird (php
> interpreter).
>
> Verwendete Software: Horde Groupware -> Modul "Whups" (Tickettracking)
> -> "whups-mail-filter"
> Der gesamte Vorgang ist schon sehr kleinteilig durch die Horde
> Mailingliste gegangen, weil ich zunächst von einem Fehler dort
> ausging.
> Hier der letzte Teil des Troubleshootings:
>
> In der main.cf habe ich den Wert "default_privs = postfix-pipe"
> gesetzt.
> Den Benutzer habe ich angelegt.
> Die Webanwendung residiert unter /var/www/horde
> Die fragliche Datei (require_once) unter
> /var/www/horde/whups/lib/Application.php
> Ab ../horde/.. gilt: 750 www-data:www-horde
> Die Benutzer "postfix" und "postfix-pipe" sind Mitglieder der Gruppe
> "www-horde".
> Die /etc/aliases sieht so aus:
> ## WHUPS queue links
> whups:   "|/usr/bin/whups-mail-filter -g -a carsten@[mydn.tld]e -Q 5"
>
> In der Datei "/usr/bin/whups-mail-filter" habe ich zu Debuggingzwecken
> diese Zeilen am Anfang eingefügt
> $shellex = shell_exec("logger INFO whoami: $(whoami)");
> $shellex = shell_exec("logger INFO who am i: $(who am i)");
> $shellex = shell_exec("touch /tmp/hallowelt.ini");
>
> Für das weitere Debugging habe ich eine Datei "testmail" angelegt mit
> diesem Inhalt:
> ######################
> From: root@derdapp001.[mydn.tld]
> To: whups@[mydn.tld]
> subject: Monitoring: Testticket
>
> Hello World
>
> #######################
> Jetzt kann ich mit dem Befehl
> "sudo -u postfix-pipe cat testmail|/usr/bin/whups-mail-filter -g -a
> carsten@[mydn.tld] -Q 5"
> den Vorgang auf der Kommandozeile testen und bekomme im Whups Ticket
> System mein gewünschtes Ticket.
> Nun gehe ich auf ein drittes System und sende von dort die "scharfe"
> E-Mail -also jetzt triggere ich den postfix:
> #####################
> root@derdapp001 ~ # sendmail whups@[mydn.tld]
> subject: monitoring: testticket
>
> Hallo welt
>
> [ctrl]+d
> #######################
> Jetzt bekomme ich im syslog des mail server diesen output:
> #########################
> ##
> Mar 12 13:35:27 derdapp004 logger: INFO whoami: postfix-pipe
> Mar 12 13:35:27 derdapp004 logger: INFO who am i: <=Anmerkung: leer:
> kein "parent user"
> Mar 12 13:35:27 derdapp004 postfix/local[16770]: BE46441CCB:
> to=<whups@localhost>, orig_to=<whups@[mydn.tld]>, relay=local,
> delay=0.95, delays=0.02/0.01/0/0.92, dsn=5.3.0, status=bounced
> (Command died with status 255: "/usr/bin/whups-mail-filter -g -a
> carsten@[mydn.tld] -Q 5". Command output: PHP Warning:
> require_once(/var/www/horde/whups/lib/Application.php): failed to open
> stream: Permission denied in /usr/bin/whups-mail-filter on line 77 PHP
> Fatal error:  require_once(): Failed opening required
> '/var/www/horde/whups/lib/Application.php'
> (include_path='.:/usr/share/php:/usr/share/pear') in
> /usr/bin/whups-mail-filter on line 77 )
> Mar 12 13:35:27 derdapp004 postfix/cleanup[16769]: B13E641CD6:
> message-id=<20180312123527.B13E641CD6@[mydn.tld]>
> Mar 12 13:35:27 derdapp004 postfix/bounce[16774]: BE46441CCB: sender
> non-delivery notification: B13E641CD6
> Mar 12 13:35:27 derdapp004 postfix/qmgr[16757]: B13E641CD6: from=<>,
> size=3250, nrcpt=1 (queue active)
> Mar 12 13:35:27 derdapp004 postfix/qmgr[16757]: BE46441CCB: removed
> Mar 12 13:35:27 derdapp004 dovecot: lda(no-reply@[mydn.tld]):
> msgid=<20180312123527.B13E641CD6@[mydn.tld]>: saved mail to INBOX
> Mar 12 13:35:27 derdapp004 postfix/pipe[16777]: B13E641CD6:
> to=<no-reply@[mydn.tld]>, orig_to=<root@[mydn.tld]>, relay=dovecot,
> delay=0.14, delays=0.02/0.01/0/0.12, dsn=2.0.0, status=sent (delivered
> via dovecot service)
> Mar 12 13:35:27 derdapp004 postfix/qmgr[16757]: B13E641CD6: removed
> ##
> ############################
> Aus dem "touch" entsteht diese Datei:
> #################
> ##
> ll /tmp/hallo*
> -rw------- 1 postfix-pipe postfix-pipe      0 Mar 12 13:35
> hallowelt.ini
> ##
> #################
> Wie zu sehen ist, funktioniert der Aufruf des "require_once" in der
> whups-mail-filter auf die Application.php nicht.
> Es scheint das System nicht zu interessieren, welcher Benutzer dort
> hinterlegt ist.
> Alle offensichtlichen Zeichen, zeigen klar, daß der Benutzer
> "postfix-pipe" Verwendung findet.
> In der Kommandozeile hat dieser auch ordenlichen Zugriff. Nur aus dem
> Postfix heraus, klappt es nicht.
> Wenn ich ein 755 auf das horde-verzeichnis gebe -also "other" =
> "read&execute" gebe, so funktioniert es.
> Das kann aber wohl nicht als ernsthafte Lösung gesehen werden, oder?
>
> Ich habe noch zwei straces auf den Process.
> Hier der output, wenn ich aus dem postfix komme:
> ####################
> ###
> [...snip...]
> gettimeofday({1520811096, 605233}, NULL) = 0
> lstat64("/var/www/horde/whups/lib/Application.php", 0xbec64008) = -1
> EACCES (Permission denied)
> gettimeofday({1520811096, 605766}, NULL) = 0
> lstat64("/var/www/horde/whups/lib/Application.php", 0xbec63f18) = -1
> EACCES (Permission denied)
> gettimeofday({1520811096, 606180}, NULL) = 0
> lstat64("/var/www/horde/whups/lib/Application.php", 0xbec65fe0) = -1
> EACCES (Permission denied)
> lstat64("/var/www/horde/whups/lib", 0xbec65ee0) = -1 EACCES (Permission
> denied)
> lstat64("/var/www/horde/whups", 0xbec65df0) = -1 EACCES (Permission
> denied)
> lstat64("/var/www/horde", {st_mode=S_IFDIR|0770, st_size=4096, ...}) =
> 0
> lstat64("/var/www", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
> lstat64("/var", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
> open("/var/www/horde/whups/lib/Application.php", O_RDONLY|O_LARGEFILE)
> = -1 EACCES (Permission denied)
> [...snip...]
> ###
> ####################
> und der gleiche Teil, wenn ich aus der Kommandozeile per "sudo -u"
> komme:
> ####################
> ###
> [...snip...]
> ettimeofday({1520812051, 622266}, NULL) = 0
> lstat64("/var/www/horde/whups/lib/Application.php",
> {st_mode=S_IFREG|0770, st_size=9232, ...}) = 0
> lstat64("/var/www/horde/whups/lib", {st_mode=S_IFDIR|0770,
> st_size=4096, ...}) = 0
> lstat64("/var/www/horde/whups", {st_mode=S_IFDIR|0770, st_size=4096,
> ...}) = 0
> lstat64("/var/www/horde", {st_mode=S_IFDIR|0770, st_size=4096, ...}) =
> 0
> lstat64("/var/www", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
> lstat64("/var", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
> gettimeofday({1520812051, 624126}, NULL) = 0
> open("/var/www/horde/whups/lib/Application.php", O_RDONLY|O_LARGEFILE)
> = 4
> [...snip...]
> ###
> ####################
>
> Wer hat hier eine Idee, was die Ursache ist? Übersehe ich noch etwas?
> Welche Debug Information kann ich noch liefern?
> Gruss
> Carsten

Reply | Threaded
Open this post in threaded view
|

Re: [postfix] pipe alias permission denied

Marco Dickert-2
In reply to this post by Carsten-2
Welches Betriebssystem setzt du ein? Unter debian-basierten Systemen läuft der
Postfix meist chrooted, vielleicht könnte das das Problem sein.

--
Marco Dickert
[hidden email]
https://misterunknown.de

smime.p7s (4K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: [postfix] pipe alias permission denied

Carsten-2
root@derdapp004 ~www/horde/whups/lib # uname -a
Linux derdapp004 3.4.113-bananian #9 SMP PREEMPT Sat May 6 12:20:11 UTC
2017 armv7l GNU/Linux

root@derdapp004 ~www/horde/whups/lib # ps -ef|grep postfix
root      2124     1  0 Mar11 ?        00:00:02 /usr/lib/postfix/master
postfix  16757  2124  0 13:33 ?        00:00:00 qmgr -l -t unix -u
postfix  16765  2124  0 13:34 ?        00:00:00 tlsmgr -l -t unix -u -c
postfix  17738  2124  0 13:46 ?        00:00:00 anvil -l -t unix -u -c
postfix  24447  2124  0 15:13 ?        00:00:00 pickup -l -t unix -u -c
postfix  24906  2124  0 15:17 ?        00:00:00 smtpd -n smtp -t inet -u
-c -o stress= -s 2
postfix  25657  2124  0 15:28 ?        00:00:00 smtpd -n smtp -t inet -u
-c -o stress= -s 2

Update aus einem weiteren Test (C&P von der Horde mailing List):
#################
##
I reworked the permissions on the tree as follows:
/ : drwxr-xr-x  16 root  root /var
/var : drwxr-xr-x  4 root  root  4096 May  6  2017 www
/var/www : drwxr-xr-x 24 www-data www-horde 4096 Mar  7 11:33 horde
/var/www/horde : drwxr-xr-x 13 www-data www-horde  4096 Mar  7 11:33 whups
/var/www/horde/whups : drwxr-xr-x 14 www-data www-horde 4096 Mar 7 11:33
lib
/var/www/horde/whups/lib : -rwxr-x--- 1 postfix-pipe www-horde 9232 Mar
11 18:55 Application.php

Pointing out the changes: set 755 from "var" down to "lib" and changed
owner of "Application.php" to "postfix-pipe".

=>> This version works.

If I set the owner of "Application.php" back to "www-data" it fails again.
Just to make sure, the group member ship is correct:
########################
##
root@derdapp004 ~www/horde/whups/lib # groups postfix-pipe
postfix-pipe : postfix-pipe www-horde
##
########################

It seems to ignore the group member ship, if triggered by postfix aliases.

##
#############



Am 12.03.2018 um 15:17 schrieb Marco Dickert:
> Welches Betriebssystem setzt du ein? Unter debian-basierten Systemen läuft der
> Postfix meist chrooted, vielleicht könnte das das Problem sein.
>

Reply | Threaded
Open this post in threaded view
|

Re: [postfix] pipe alias permission denied

Carsten-2


Am 12.03.2018 um 15:33 schrieb Carsten:

> root@derdapp004 ~www/horde/whups/lib # uname -a
> Linux derdapp004 3.4.113-bananian #9 SMP PREEMPT Sat May 6 12:20:11
> UTC 2017 armv7l GNU/Linux
>
> root@derdapp004 ~www/horde/whups/lib # ps -ef|grep postfix
> root      2124     1  0 Mar11 ?        00:00:02 /usr/lib/postfix/master
> postfix  16757  2124  0 13:33 ?        00:00:00 qmgr -l -t unix -u
> postfix  16765  2124  0 13:34 ?        00:00:00 tlsmgr -l -t unix -u -c
> postfix  17738  2124  0 13:46 ?        00:00:00 anvil -l -t unix -u -c
> postfix  24447  2124  0 15:13 ?        00:00:00 pickup -l -t unix -u -c
> postfix  24906  2124  0 15:17 ?        00:00:00 smtpd -n smtp -t inet
> -u -c -o stress= -s 2
> postfix  25657  2124  0 15:28 ?        00:00:00 smtpd -n smtp -t inet
> -u -c -o stress= -s 2
>
> Update aus einem weiteren Test (C&P von der Horde mailing List):
> #################
> ##
> I reworked the permissions on the tree as follows:
> / : drwxr-xr-x  16 root  root /var
> /var : drwxr-xr-x  4 root  root  4096 May  6  2017 www
> /var/www : drwxr-xr-x 24 www-data www-horde 4096 Mar  7 11:33 horde
> /var/www/horde : drwxr-xr-x 13 www-data www-horde  4096 Mar  7 11:33
> whups
> /var/www/horde/whups : drwxr-xr-x 14 www-data www-horde 4096 Mar 7
> 11:33 lib
> /var/www/horde/whups/lib : -rwxr-x--- 1 postfix-pipe www-horde 9232
> Mar 11 18:55 Application.php
>
> Pointing out the changes: set 755 from "var" down to "lib" and changed
> owner of "Application.php" to "postfix-pipe".
>
> =>> This version works.
>
> If I set the owner of "Application.php" back to "www-data" it fails
> again.
> Just to make sure, the group member ship is correct:
> ########################
> ##
> root@derdapp004 ~www/horde/whups/lib # groups postfix-pipe
> postfix-pipe : postfix-pipe www-horde
> ##
> ########################
>
> It seems to ignore the group member ship, if triggered by postfix
> aliases.
>
> ##
> #############
>
>
>
> Am 12.03.2018 um 15:17 schrieb Marco Dickert:
>> Welches Betriebssystem setzt du ein? Unter debian-basierten Systemen
>> läuft der
>> Postfix meist chrooted, vielleicht könnte das das Problem sein.
>>
>

Hi noch einmal,
der Hinweis mit dem chroot hat mich animiert in diese Richtung zu suchen
(ich bin jetzt nicht DER Linux Experte, daher bitte ich um Nachsicht).
Also, es scheint einen Zusammenhang zu geben.
Wenn ich die Datei "whups-mail-filter" um diese Zeile erweitere:
"..
$shellex = shell_exec("logger INFO my id: $(id)");
$shellex = shell_exec("logger INFO my groups: $(groups)");
.."
bekomme ich im syslog diese Ausgabe:
"...
Mar 12 17:56:42 derdapp004 logger: INFO my id: uid=1001(postfix-pipe)
gid=1002(postfix-pipe) groups=1002(postfix-pipe)
Mar 12 17:56:42 derdapp004 logger: INFO my groups: postfix-pipe
..."

Ja, postfix ist chrooted in der master.cf.
Jetzt habe angefangen, zu experimentieren, aber bis jetzt hat nichts
geholfen.
Zum Beispiel habe ich einfach mal die "/etc/passwd" und die "/etc/group"
in das Verzeichnis "/var/spool/postfix/etc" kopiert und postfix neu
gestartet.
Leider ohne eine sichtbare Änderung.
Die Frage scheint also lauten zu müssen: Wie bekomme ich den chroot des
postfix dazu, eine group-datei zu lesen?

Any ideas?

Gruss
Carsten
Reply | Threaded
Open this post in threaded view
|

Re: [postfix] pipe alias permission denied

Walter H.
On 12.03.2018 20:29, Carsten wrote:

>
>
> Ja, postfix ist chrooted in der master.cf.
> Jetzt habe angefangen, zu experimentieren, aber bis jetzt hat nichts
> geholfen.
> Zum Beispiel habe ich einfach mal die "/etc/passwd" und die
> "/etc/group" in das Verzeichnis "/var/spool/postfix/etc" kopiert und
> postfix neu gestartet.
> Leider ohne eine sichtbare Änderung.
> Die Frage scheint also lauten zu müssen: Wie bekomme ich den chroot
> des postfix dazu, eine group-datei zu lesen?
SELinux oder so kommt nicht zusätzlich ins Spiel, oder ist SELinux nur
ein Feature von RHEL basierten Linuxen, was bei Dir ja nicht der Fall
ist ...

Walter


smime.p7s (4K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: [postfix] pipe alias permission denied

J. Fahrner
In reply to this post by Carsten-2
Am 2018-03-12 20:29, schrieb Carsten:
> Ja, postfix ist chrooted in der master.cf.
> Die Frage scheint also lauten zu müssen: Wie bekomme ich den chroot
> des postfix dazu, eine group-datei zu lesen?

Gar nicht. Das bei chroot angegebene Verzeichnis wird für diesen Prozess
(und alle Subprozesse) zum "root", du hast keinen Zugriff mehr auf alles
was außerhalb davon ist. Dir fehlt also nicht nur dein PHP Script,
sondern der ganze PHP Interpreter und alles was der so benötigt (config,
Libraries, Datenbank, usw.).
Für das was du vor hast darfst du Postfix nicht mit chroot laufen
lassen.
Reply | Threaded
Open this post in threaded view
|

Re: [postfix] pipe alias permission denied

Carsten-2



Am 13.03.2018 um 08:01 schrieb J. Fahrner:
Am 2018-03-12 20:29, schrieb Carsten:
Ja, postfix ist chrooted in der master.cf.
Die Frage scheint also lauten zu müssen: Wie bekomme ich den chroot
des postfix dazu, eine group-datei zu lesen?

Gar nicht. Das bei chroot angegebene Verzeichnis wird für diesen Prozess (und alle Subprozesse) zum "root", du hast keinen Zugriff mehr auf alles was außerhalb davon ist. Dir fehlt also nicht nur dein PHP Script, sondern der ganze PHP Interpreter und alles was der so benötigt (config, Libraries, Datenbank, usw.).
Für das was du vor hast darfst du Postfix nicht mit chroot laufen lassen.

Hallo
Die Aussage kann so nicht stimmen.
Dann würde er das "whups-mail-filter" ja überhaupt nicht ziehen und das tut er.
Sonst hätte ich die Ausgabe der Zeilen
"..
$shellex = shell_exec("logger INFO my id: $(id)");
$shellex = shell_exec("logger INFO my groups: $(groups)");
.."
ja gar nicht im syslog zu sehen bekommen:
"...
Mar 12 17:56:42 derdapp004 logger: INFO my id: uid=1001(postfix-pipe) gid=1002(postfix-pipe) groups=1002(postfix-pipe)
Mar 12 17:56:42 derdapp004 logger: INFO my groups: postfix-pipe
..."

Und die Fehlermeldung in dieser Form wäre auch nicht existent:
"...
Mar  8 12:40:38 derdapp004 postfix/local[30799]: 04C7040C4C: to=<whups@localhost>, orig_to=[hidden email], relay=local, delay=0.58, delays=0.09/0.04/0/0.45, dsn=5.3.0, status=bounced (Command died with status 255: "/usr/bin/whups-mail-filter -g". Command output: PHP Warning: require_once(/usr/share/php/www/horde/whups/lib/Application.php): failed to open stream: No such file or directory in /usr/bin/whups-mail-filter on line 73 PHP Fatal error: require_once(): Failed opening required '/usr/share/php/www/horde/whups/lib/Application.php' (include_path='.:/usr/share/php:/usr/share/pear') in /usr/bin/whups-mail-filter on line 73 )
..."

Auch würde ich dann im strace kein "permission denied" sehen, sondern ein "not found"
"...
[...snip...]
gettimeofday({1520811096, 605233}, NULL) = 0
lstat64("/var/www/horde/whups/lib/Application.php", 0xbec64008) = -1 EACCES (Permission denied)
gettimeofday({1520811096, 605766}, NULL) = 0
lstat64("/var/www/horde/whups/lib/Application.php", 0xbec63f18) = -1 EACCES (Permission denied)
gettimeofday({1520811096, 606180}, NULL) = 0
lstat64("/var/www/horde/whups/lib/Application.php", 0xbec65fe0) = -1 EACCES (Permission denied)
lstat64("/var/www/horde/whups/lib", 0xbec65ee0) = -1 EACCES (Permission denied)
lstat64("/var/www/horde/whups", 0xbec65df0) = -1 EACCES (Permission denied)
lstat64("/var/www/horde", {st_mode=S_IFDIR|0770, st_size=4096, ...}) = 0
lstat64("/var/www", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat64("/var", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
open("/var/www/horde/whups/lib/Application.php", O_RDONLY|O_LARGEFILE) = -1 EACCES (Permission denied)
[...snip...]
..."

Also "gar nicht" im Sinne dieser Grundlage kann nicht stimmen.

Gruss
Carsten
Reply | Threaded
Open this post in threaded view
|

Re: [postfix] pipe alias permission denied

Carsten-2
In reply to this post by Walter H.


Am 12.03.2018 um 21:52 schrieb Walter H.:

> On 12.03.2018 20:29, Carsten wrote:
>>
>>
>> Ja, postfix ist chrooted in der master.cf.
>> Jetzt habe angefangen, zu experimentieren, aber bis jetzt hat nichts
>> geholfen.
>> Zum Beispiel habe ich einfach mal die "/etc/passwd" und die
>> "/etc/group" in das Verzeichnis "/var/spool/postfix/etc" kopiert und
>> postfix neu gestartet.
>> Leider ohne eine sichtbare Änderung.
>> Die Frage scheint also lauten zu müssen: Wie bekomme ich den chroot
>> des postfix dazu, eine group-datei zu lesen?
> SELinux oder so kommt nicht zusätzlich ins Spiel, oder ist SELinux nur
> ein Feature von RHEL basierten Linuxen, was bei Dir ja nicht der Fall
> ist ...
>
> Walter
>

Hallo,
SELinux hatte ich auch schon mal im Verdacht, ebenso, wie Apparmor, aber
SELinux ist nicht aktiviert und Apparmor nur für den mysql deffiniert.
und es bleibt ja im Raum, daß es von der Kommandozeile -also ohne den
chroot; funktioniert.

Gruss
Carsten
Reply | Threaded
Open this post in threaded view
|

Re: [postfix] pipe alias permission denied

Carsten-2


Am 13.03.2018 um 08:34 schrieb Carsten:

>
>
> Am 12.03.2018 um 21:52 schrieb Walter H.:
>> On 12.03.2018 20:29, Carsten wrote:
>>>
>>>
>>> Ja, postfix ist chrooted in der master.cf.
>>> Jetzt habe angefangen, zu experimentieren, aber bis jetzt hat nichts
>>> geholfen.
>>> Zum Beispiel habe ich einfach mal die "/etc/passwd" und die
>>> "/etc/group" in das Verzeichnis "/var/spool/postfix/etc" kopiert und
>>> postfix neu gestartet.
>>> Leider ohne eine sichtbare Änderung.
>>> Die Frage scheint also lauten zu müssen: Wie bekomme ich den chroot
>>> des postfix dazu, eine group-datei zu lesen?
>> SELinux oder so kommt nicht zusätzlich ins Spiel, oder ist SELinux
>> nur ein Feature von RHEL basierten Linuxen, was bei Dir ja nicht der
>> Fall ist ...
>>
>> Walter
>>
>
> Hallo,
> SELinux hatte ich auch schon mal im Verdacht, ebenso, wie Apparmor,
> aber SELinux ist nicht aktiviert und Apparmor nur für den mysql
> deffiniert.
> und es bleibt ja im Raum, daß es von der Kommandozeile -also ohne den
> chroot; funktioniert.
>
> Gruss
> Carsten

Moin nochmal,
ich bekomm' hier echt einen an der Waffel -gibt Menschen, die behaupten,
ich hätte da schon eine kleben ;-)

chroot oder nicht chroot. Das ist hier die Frage.
Laut syslog ist dieser Prozess: "postfix/local" für das Ausführen der
aliases Pipe zuständig -zumindest wird es so im Syslog gemeldet: "..Mar
13 11:08:06 derdapp004 postfix/local[10609]: 8D8E741E10:
to=<whups@localhost>, ..."

Schaue ich nun in die master.cf, so steht dort in der Zeile für den local:
"....
discard   unix  -       -       -       -       -       discard
local     unix  -       n       n       -       -       local
virtual   unix  -       n       n       -       -       virtual
..."
was sich für mich ließt, daß er NICHT im chroot läuft.
Warum sollte also der Prozess die /etc/group nicht ziehen, wie die
Ausgabe von $(groups) im Script vermuten läßt:
"...
#!/usr/bin/php
<?php
$shellex = shell_exec("logger INFO whoami: $(whoami)");
$shellex = shell_exec("logger INFO who am i: $(who am i)");
$shellex = shell_exec("logger INFO my id: $(id)");
$shellex = shell_exec("logger INFO my groups: $(groups)");
$shellex = shell_exec("touch /tmp/hallowelt.ini");
..."
ergibt:
"...
Mar 13 11:08:06 derdapp004 logger: INFO whoami: postfix-pipe
Mar 13 11:08:06 derdapp004 logger: INFO who am i:
Mar 13 11:08:06 derdapp004 logger: INFO my id: uid=1001(postfix-pipe)
gid=1002(postfix-pipe) groups=1002(postfix-pipe)
Mar 13 11:08:06 derdapp004 logger: INFO my groups: postfix-pipe
..."

Komme ich aus der Kommandozeile mit einem
"...
sudo -u postfix-pipe /tmp/testmail
..."
steht im syslog:
"...
Mar 13 11:19:24 derdapp004 logger: INFO whoami: postfix-pipe
Mar 13 11:19:24 derdapp004 logger: INFO who am i:
Mar 13 11:19:24 derdapp004 logger: INFO my id: uid=1001(postfix-pipe)
gid=1002(postfix-pipe) groups=1002(postfix-pipe),1001(www-horde)
Mar 13 11:19:25 derdapp004 logger: INFO my groups: postfix-pipe www-horde
..."

Inhalt der /tmp/testmail:
"...
echo "From: root@[mydn.tld]_
To: whups@[mydn.tld]_
subject: Monitoring: Testticket_
_
Hello World_
_"|/usr/bin/whups-mail-filter -g -a carsten@[mydn.tld] -Q 5;
..."

Ich habe die MANPAGES von Postfix jetzt rauf und runter gelesen, aber
irgendwas muss ich übersehen, oder?

Ich bin.... not amused....
gruss
Carsten
Reply | Threaded
Open this post in threaded view
|

Re: [postfix] pipe alias permission denied

J. Fahrner
In reply to this post by Carsten-2

Also "gar nicht" im Sinne dieser Grundlage kann nicht stimmen.

Ich habe dir nur die grundlegende Funktion von chroot beschrieben. Um dein seltsames Verhalten zu erklären müsste man wissen, welche Prozesse Postfix mit chroot laufen lässt, und welche nicht. Alle können es offensichtlich nicht sein, da manches ja gefunden wird. Aber das Wissen wird dir nicht helfen, denn du kannst das Verhalten ja nicht ändern.

Daher bleibt meine Empfehlung: schalte das chroot aus, du wirst nicht froh damit.

Reply | Threaded
Open this post in threaded view
|

Re: [postfix] pipe alias permission denied (SOLVED: finaly)

Carsten-2

hallo zusammen,

ein herzliches Danke für die Unterstützung.
Die Lösung gibt es hier:

https://inoculat0r.blogspot.de/2018/03/postfix-and-secondary-group-issue-with.html

;-)


Am 13.03.2018 um 13:45 schrieb J. Fahrner:

Also "gar nicht" im Sinne dieser Grundlage kann nicht stimmen.

Ich habe dir nur die grundlegende Funktion von chroot beschrieben. Um dein seltsames Verhalten zu erklären müsste man wissen, welche Prozesse Postfix mit chroot laufen lässt, und welche nicht. Alle können es offensichtlich nicht sein, da manches ja gefunden wird. Aber das Wissen wird dir nicht helfen, denn du kannst das Verhalten ja nicht ändern.

Daher bleibt meine Empfehlung: schalte das chroot aus, du wirst nicht froh damit.