Apache2+fcgi+suexec+mail() funktion und virtuelle User

Apache, Lighttpd, nginx, Cherokee
wecki
Posts: 101
Joined: 2005-01-27 08:55

Apache2+fcgi+suexec+mail() funktion und virtuelle User

Post by wecki » 2006-12-20 19:50

Hallo,

ich habe folgendes Problem:

Wenn ein Kunde auf dem Server die mail() Funktion von PHP verwendt, führt diese unter dem Benutzer des Kunden die Versenung aus. Da es sich aber bei den Benutzern nur um virtuelle Benutzer handelt, welche mit lib_nss für Apache-Fcgi und SuExec verwendbar gemacht werden.

Anscheinend kann aber postfix/sendmail mit den BenutzerIDs nichts anfangen und findet darunter keinen Benutzer:

tail -f /var/log/mail.err
Dec 20 16:28:49 uranus postfix/sendmail[21709]: fatal: no login name found for user ID 10007


Weis jemand wie ich das hinbekomme?
Also so, das die Kunden über die mail() Funktion wieder senden können?

Dank euch schonmal.

acepilot
Posts: 86
Joined: 2003-07-30 17:42

Re: Apache2+fcgi+suexec+mail() funktion und virtuelle User

Post by acepilot » 2006-12-20 21:17

Hallo wecki,

Warum läßt du die User nicht direkt mit ihrem User über den SMTP Dienst deines Servers Mails verschicken. Damit könntest du doch dein Problem umgehen.

Gruß
Markus

wecki
Posts: 101
Joined: 2005-01-27 08:55

Re: Apache2+fcgi+suexec+mail() funktion und virtuelle User

Post by wecki » 2006-12-20 22:34

Hallo,

Die User dürfen ja über den SMTP Dienst Mails verschicken. Von localhost halt.

Aber das funktioniert leider nicht.

Oder muss ich dies irgendwo einstellen?
In den php.inis ist ja der Hinweis, das dies nur für Win Systeme einzustellen ist.

Ich habe außerdem dieses System als Backup von einem anderen Server eingespielt. Da lief alles. Nun weis ich nciht warum es das jetzt nicht macht.

acepilot
Posts: 86
Joined: 2003-07-30 17:42

Re: Apache2+fcgi+suexec+mail() funktion und virtuelle User

Post by acepilot » 2006-12-20 22:55

Mmh, bevor hier alle anfangen zu raten nenne doch m al deine Systemumgebung. Was für ein OS läuft auf dem Server, läuft eine Configoberfläche wie Confixx, Plesk, etc.

Sind die beiden Server wirklich 100% identisch (Softwareseitig)?

wecki
Posts: 101
Joined: 2005-01-27 08:55

Re: Apache2+fcgi+suexec+mail() funktion und virtuelle User

Post by wecki » 2006-12-20 23:17

Hallo,

als Oberfläche läuft SysCP mit etwas Modifikation, damit es mit FastCGI läuft.
Das Betriebssystem ist Debian 3.1.

Die Konfiguration von Apache2 ist definitiv identisch. Genau wie PHP. Diese habe ich nämlich kopiert und die IPs angepasst.

Wie versucht denn mail() die eMails zu senden? Ich müsste ja erlauben, das alle Mailanfragen an SMTP von localhost/127.0.0.1 beantwortet werden. Wie mache ich das?

wecki
Posts: 101
Joined: 2005-01-27 08:55

Re: Apache2+fcgi+suexec+mail() funktion und virtuelle User

Post by wecki » 2006-12-21 14:56

Hallo,

Nochmal zur Klarstellung: es sind virtuelle User aus einder MySQL Datenbank.

wecki
Posts: 101
Joined: 2005-01-27 08:55

Re: Apache2+fcgi+suexec+mail() funktion und virtuelle User

Post by wecki » 2006-12-21 16:08

Hallo nochmal,

wie richte ich denn Postfix so ein, das es alle eMails, welche von der PHP Funktion Mail() gesendet werden (gleich welchen Benutzers) transportiert. Netürlich nur wenn die Mail Funktion auch auf dem Server ausgeführt wird. Will ja kein offenes Relay)?
Und das ganze dann auch noch mit virtuellen Nutzern/Gruppen.

Hat da wer ne gute Internetseite, Howto oder ein Beispiel für mich?

Ich such jetzt schon seit 2 Tagen nach der Problemlösung. Find aber nix. Oder ich such unter dem falschen Schlagwort.

@acepilot:
Wie mache ich das:

"Warum läßt du die User nicht direkt mit ihrem User über den SMTP Dienst deines Servers Mails verschicken. Damit könntest du doch dein Problem umgehen. "

Ich denke nämlich das es bei mri anscheinend doch nicht so ist.

rootsvr
Posts: 538
Joined: 2005-09-02 11:12

Re: Apache2+fcgi+suexec+mail() funktion und virtuelle User

Post by rootsvr » 2006-12-21 16:40

wecki wrote:Hallo,

Wie versucht denn mail() die eMails zu senden? Ich müsste ja erlauben, das alle Mailanfragen an SMTP von localhost/127.0.0.1 beantwortet werden. Wie mache ich das?
normalerweise über das Programm was im sendmail_path in der php.ini steht.

Deinen zweiten Satz verstehe ich nicht ganz, bei meiner (ohne syscp) Lösung können die Domains über smtp einfach verschicken, ein permit_mynetworks in der main.cf braucht es imho aber.

Wenn Du Leute smtp inklusive Authentifizierung nutzen sollen (und nicht das sendmail Programm) geht es imho nicht mit mail(), sondern mit extra mail classen wie z.B. PhpMailer

wecki
Posts: 101
Joined: 2005-01-27 08:55

Re: Apache2+fcgi+suexec+mail() funktion und virtuelle User

Post by wecki » 2006-12-21 16:58

Hallo,

ich habe das Problem, das ich Apache2 mit SuExec und FastCGI laufen habe. Da werden alle PHP FIles mit dem entsprechenden Benutzer ausgeführt.

Wenn nun ein Kunde mittels mail() z.B. ein Kontaktformular absenden möchte steht in meiner mail.err der Fehler, das der entsprechende User nicht gefunden werden kann.

postfix/sendmail[23651]: fatal: no login name found for user ID 10046

Warum Postfix dann nach dem User sucht oder Ihn nicht findet weis ich nicht. Auf dem alten Server hat es damit hingehauen, dass die Kunden lokal die Mails so verschicken konnten. Auch Ohne das diese als Systemuser angelegt waren. Nun will Sendmali anscheinend Systemuser. Und die habe ich dafür nicht.

Auch an den php.inis wurde nichts verändert.

Ich will im Prinzip nur, dass Benutzer sich Authentifizieren müssen, wenn Sie SMTP von extern nutzen. Sprich z.B. mit Outlook oder von nem anderen Server. Aber wenn es lokal ist und z.B. über mail() geschickt wird, müssen die Mails auch so raus gehen.

Was muss ich denn in die my_destination eintragen? Dort steht bisher:

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
append_dot_mydomain = no
myhostname = host1.xyz.de
mydomain = host1.xyz.de
mydestination = $myhostname $mydomain localhost localhost.$mydomain
mynetworks = 127.0.0.0/8
alias_maps = $alias_database
smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination
virtual_mailbox_base = /var/kunden/mail/
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual_mailbox_maps.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual_mailbox_domains.cf
virtual_alias_domains =
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual_alias_maps.cf
virtual_uid_maps = static:2000
virtual_gid_maps = static:2000
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes

rootsvr
Posts: 538
Joined: 2005-09-02 11:12

Re: Apache2+fcgi+suexec+mail() funktion und virtuelle User

Post by rootsvr » 2006-12-21 17:27

Du erforderst imho sasl auth für alle, versuch mal:

Code: Select all

smtpd_recipient_restrictions =
               permit_mynetworks,         
               permit_sasl_authenticated, 
               reject_unauth_destination
Damit sollten User die von mynetworks kommen (127.0.0.1) keine Authentifizierung brauchen.

postifx dann reloaden.
/etc/init.d/postfix reload

Ob das allerdings bei syscp so richtig ist kann dir das syscp forum sicher besser beantworten. Solche Interfaces intergrieren immer ein großen Wust an Paketen und rumfuschen so wie mit Standalone installationen (was ich hier versuche) kann in die Hose gehen.