Jump to content
Froxlor Forum
  • 0

User-Crons -> Mails-Versand


witschi

Question

Posted

Moin Leute,

mal wieder melde ich mich mit meinem Sorgenkind 'Shopware'. Dort werden Newsletter mit Hilfe eines eingerichteten Cron-Jobs versandt. Wichtig hierbei zu erwähnen ist wohl, dass es kein Cronjob des Users root ist, sondern vom jeweiligen Froxlor-Kunden. Nun versucht der User-Prozess beim verschicken der Mails seinen eigenen Namen herauszufinden. Dazu braucht er die User-DB, die laut /etc/nsswitch.conf im MySQL liegt. Die Config zum Nachschlagen von User-Informationen (/etc/libnss-mysql.cfg) ist aber nicht durch den User lesbar. Da ich die Config auch nicht durch den User lesbar machen möchte (da dort ein Passwort drin steht), habe ich momentan keine vernünftige Lösung für dieses Problem.

Letztendlich spielt es sogar gar keine Rolle, dass es sich hierbei um Shopware handelt, denn auch die Info-/Error-Mails des Cronjobs können aus besagten Gründen nicht versandt werden...

Vielen Dank schon mal für die Hilfe!

21 answers to this question

Recommended Posts

Posted

Ich versteh das Problem nicht...

* * * * * [user] [programm]

Führt wunderbar den Cron unter dem angegebenen User aus. Der Name wird da doch durch den Cron (der als root läuft) aufgelöst.

Auch ein Script das z.B. 'whoami' ausführen soll, funktioniert bei mir als Froxlor-Kunden-User wunderbar.

Geht es um Mails die vom Cron kommen gehen die doch standardmäßig an root@hostname - auch da sollte es kein problem mit der auflösung des Namens geben. Selbst wenn es eine E-Mail Adresse ist, die auf dem System eingerichtet ist, übernimmt die Auflösung hier doch dovecot/postfix...also ich kann mir leider nicht ganz erklären wo dein Problem ist.

Posted
MAILTO=server@nn-webdesign.com

* * * * * [user] [befehl]

So sieht meine /etc/cron.d/file Datei aus. Nun versucht der Benutzer [user] die Cron-Mail an server@nn-webdesign.com zu schicken. Um jedoch die Mail zu verschicken, versucht der Cron seinen eigenen Namen rauszufinden. Das endet letztendlich in einem Fehler des Postfix:

postfix/sendmail[5336]: fatal: no login name found for user ID 10031

Zu allem Überfluss bleibt der Cron-Prozess dann hängen und ich habe im Laufe der Zeit unzählig viele hängende Prozesse.

Posted

Das dürfte dann wohl eher dran liegen, dass der Kunde keine Shell hat - wie soll er auch etwas via Cron in der Shell ausführen wenn er gar nicht darf? Da müsstest du dem Kunden zunächst eine Shell zuweisen in Froxlor, siehe Einstellungen

Posted

Meinst du Einstellungen - Sicherheitseinstellungen - Erlaube Kunden für FTP Benutzer eine Shell auszuwählen? Das ist nämlich bisher deaktiviert.

Posted

Ja natürlich ist das deaktiviert - das ist ja auch eine Einstellung die mit Vorsicht zu genießen ist, aber ja, die mein ich

Posted

Leider hilft das nicht weiter. Ich habe dem entsprechenden User die Shell /bin/bash zur Verfügung gestellt - der Fehler im syslog bleibt aber der selbe. Auch nach restart des Postfix und des Cron-Daemons. Ein Login mittels Putty funktioniert jedoch reibungslos...

Posted

Dann müsste ich ma wissen was dieses Script da treibt...K.a. ob das jetzt wirklich was mit froxlor/libnss-mysql zu tun hat...

Posted

Zum Testen habe ich nur ein echo ausgeführt - das sollte dann ja bereits per Mail versandt werden.

Aber auch der Test eine E-Mail-Direkt über die User-Shell zu versenden klappt nicht:

$ echo "Test" | mail -s "Test Subject" server@nn-webdesign.com
send-mail: fatal: no login name found for user ID 10031
Can't send mail: sendmail process failed with error code 75

 

Posted
To prevent Postfix sendmail from looking up this information you must supply the sender name or address with the -f command-line option. 

 

Posted

Es ist doch so, dass ein User immer in der Lage sein sollte, seine eigenen Informationen abzufragen. Dazu müsste aber die libnss-mysql.cfg lesbar für alle sein. Da dort aber der Zugang zur Froxlor-Datenbank drin steht, ist das natürlich keine Option. Deswegen habe ich nun einen nss-user angelegt (mit den entsprechenden SELECT-Rechten auf die Tabellen ftp_users und ftp_groups) und diesen in die libnss-mysql.cfg geschrieben. In der libnss-mysql-root.cfg steht natürlich weiterhin der root-user für die Froxlor-Datenbank. Nun konnte ich also auch die libnss-mysql.cfg lesbar für alle machen und siehe da: alle meine Probleme sind gelöst.

Die Standard-Beispiel-Configs von libnss-mysql ist es übrigens auch genau so vorgesehen, wie ich es jetzt umgesetzt habe.

Posted

Ich dachte mir schon, dass eine solche Antwort kommt. Wie du dir aber sicher denken kannst, war dies als konstruktive Kritik zu verstehen. ;-)

Posted

Ist mir schon klar - du hast nix weiter gemacht als nen eigenen mysql-user für das libnss-zeug anzulegen, der halt NUR auf die ftp-tables darf...joa...kann man machen, muss man aber nicht - sonst kannste auch anfangen für postfix/Dovecot eigene user zu machen die dann nur auf mail_* tables selecten dürfen etc. hat schon fast was von security through obscurity

Posted

Nein, das Problem sind folgende Dateirechte, die du in der Konfiguration von libnss-mysql beschreibst:

chmod 0600 "/etc/libnss-mysql.cfg"

Dadurch ist es anderen Usern nicht möglich die eigenen Informationen auszulesen und somit funktioniert am Ende auch das versenden von Mails aus einem Cronjob nicht. Man könnte natürlich auch sagen, dass man alles so lässt und nur die Dateirechte der Config auf 0644 setzt, aber meine bedenken dazu habe ich ja bereits geäußert...

Posted
# Make sure that `passwd`, `group` and `shadow` have mysql in their lines
# You should place mysql at the end, so that it is queried after the other mechanisams
#
passwd:         compat mysql
group:          compat mysql
shadow:         compat mysql

hosts:       files dns
networks:    files dns

services:    db files
protocols:   db files
rpc:         db files
ethers:      db files
netmasks:    files
netgroup:    files
bootparams:  files

automount:   files
aliases:     files

 

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...