Re: [postfix] pipe alias permission denied

2018-03-12 Diskussionsfäden Carsten



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 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


Re: [postfix] pipe alias permission denied

2018-03-12 Diskussionsfäden 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 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.





Re: [postfix] pipe alias permission denied

2018-03-12 Diskussionsfäden Marco Dickert
Welches Betriebssystem setzt du ein? Unter debian-basierten Systemen läuft der
Postfix meist chrooted, vielleicht könnte das das Problem sein.

-- 
Marco Dickert
ma...@misterunknown.de
https://misterunknown.de


smime.p7s
Description: S/MIME cryptographic signature


Re: [postfix] pipe alias permission denied

2018-03-12 Diskussionsfäden 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=, orig_to=, 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=, orig_to=, 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" 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, 

[postfix] pipe alias permission denied

2018-03-12 Diskussionsfäden 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=, orig_to=, 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=, orig_to=, 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" 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