sendmail_path /sbin/mailer ?

fr@nk-pcn

Neuer User
Mitglied seit
6 Mrz 2006
Beiträge
117
Punkte für Reaktionen
0
Punkte
0
Hallo liebe IPPF- Gemeinde!

Ich habe wie http://www.ip-phone-forum.de/showthread.php?t=103110 beschrieben auf einem USB- Stick Apache 1.3 mit PHP 5.2. Dieser läuft und ist von außen erreichbar:)THX IPPF:). Nach einer HTML- Seite wird ein PHP- Script ausgeführt welches Datenfelder eines Kontaktformulars als Mail verschicken soll. Da die Fritzbox 7170- Software kein sendmail kennt konnte ich in der php.ini des Apache nichts eingeben (sendmail_path ist "no value").
Welcher Eintrag ist nötig?

z.Z.

Code:
; For Unix only.  You may supply arguments as well (default: "sendmail -t -i")
sendmail_path = ""

Die Box ist doch in der Lage über den FRITZ!Box Push Service Mails zu versenden. Gibt es eine Möglichkeit über den mailer des Push Services eigene eMails via php zu versenden?

Zurzeit nutze ich das php- Script von http://www.perlunity.de/php/scripts/phpunity.easymailer.shtml.

Wenn "mailer" den Anforderungen nicht gewachsen ist, welche Alternative gibt es und wie sieht diese aus?

Lieben Gruß aus der Hauptstadt
 
Hi,

mit welcher Version hast du das am laufen?

Gruß.
 
mit welcher Version hast du das am laufen?

Wenn du mal wieder auf den Apache scharf bist, bei mir rödelt er auf
-freetz-devel-2450M.

Und das tat er auch auf allen Vorgängerversionen. Ich weiss nicht wie ihr das geschafft habt das euer Apache nicht mehr läuft.

Ich denke mal das ist es was du mit "das" meintest.

OnTopic: Sendmail ist nicht auf der Box, und der Mailer nutzt den SMTP des Providers.
 
@ WLAN-VoIP-Fan:

Die Box: FRITZ!Box Fon WLAN 7170 Firmware-Version 29.04.57
Der Apache: 1.3.37 mit PHP 5.2.2
Sonstige Mods: keine


@team-t

OnTopic: Sendmail ist nicht auf der Box, und der Mailer nutzt den SMTP des Providers.


Hm! Hat schon jemand erfolgreich Sendmail nach installiert? Woher und wie? Wenn ja wie und wie muß die php.ini aussehen?

Gruß aus der Hauptstadt
 
Zuletzt bearbeitet:
Sendmail für Fritzbox?

Hallihallo,

ich möchte gerne ein Forum auf meiner Box laufen lassen, was auch alles ganz ok funktioniert, nur versucht es sendmail zu nutzen, was aber nicht auf der Box ist. So ziemlich jedes Forum nutzt sendmail, also führt da wohl kein Weg daran vorbei.

Meine Frage nun:

- Hat jemand sendmail erfolgreich auf die Fritzbox konvertiert?

oder

- Hat sich jemand die Mühe gemacht ein Shellscript zu entwerfen, welches den internen MAILER - Befehl nutzt und sendmail "imitiert"?

Wer den Push-Service im Web-Interface konfiguriert hat, der kann ja eigentlich ganz einfach mit zum Beispiel "mailer -s test" sich eine Mail senden.

Mailersyntax:

usage: mailer mailer [-s subject] -f from -t to -m mailserver [-a authname [-w passwd]] -i file(s) [-r] [-d attachfile(s)]
options:
-? - print this help
-M STRING - memory debug output. (NULL)
-p STRING - pidfile. ("/var/run/mmailer.pid")
-s STRING - subject. ("FRITZ!Box")
-f STRING - from. (NULL)
-t STRING - to. (NULL)
-m STRING - mailserver. (NULL)
-a STRING - authname. (NULL)
-w STRING - passwd. (NULL)
-n - no SMTP-Auth. (NOTSET)
-d STRING - attachment(s). (NULL)
-i STRING - inline part(s) - add text file(s) here. (NULL)
-r - use "multipart/related" if possible. (NOTSET)
-D STRING - switch debug logs on. (NULL)
note: please use filename extensions if possible


Kann da jemand etwas nützliches beisteuern?
 
Schau mal da,

ich denke, das sollte funkionieren.

Joe
 
Hallo Joe_57,

danke für den Tip, ist aber leider nicht das was ich suche.
Ich brauche das portierte programm "sendmail" oder ein shellscrip, das sendmail aufrufe, mit allen optionen, so umlenkt, dass der Fritzbox - MAILER was damit anfangen kann.

Sonst noch jemand nen Input?
 
Hallo jassonmc,

hier mal als Beispiel meine /var/flash/calllog:
Code:
#! /bin/sh
echo "`date +\"%d.%m.%y %H:%M\"` - Anruf von $1 an Nummer $2 ($3) $4"
/sbin/mailer \
  -s "Am `date +\"%d.%m.%y %H:%M\"` hat $1 an Nummer $2 ($3) $4 angerufen." \
  -f 'Verpasster Anruf <[COLOR="red"][email protected][/COLOR]>' \ 
  -t "[COLOR="red"][email protected][/COLOR]" \
  -m [COLOR="Red"]mail.gmx.net[/COLOR] \
  -a [COLOR="red"][email protected][/COLOR] \
  -w "[COLOR="Red"]yyyyyyyyyy[/COLOR]"
Die roten Einträge müssen halt entsprechend angepasst werden.
xxx... ist der Mail-Account,
yyy... das Passwort dazu.

Und hier noch der Syntax vom mailer auf der Box:
Code:
# /sbin/mailer -?

usage: mailer mailer [-s subject] -f from -t to -m mailserver [-a authname [-w passwd]] -i file(s) [-r] [-d attachfile(s)]
options:
  -?                 - print this help
  -M STRING          - memory debug output. (NULL)
  -p STRING          - pidfile. ("/var/run/mmailer.pid")
  -s STRING          - subject. ("FRITZ!Box")
  -f STRING          - from. (NULL)
  -t STRING          - to. (NULL)
  -m STRING          - mailserver. (NULL)
  -a STRING          - authname. (NULL)
  -w STRING          - passwd. (NULL)
  -n                 - no SMTP-Auth. (NOTSET)
  -d STRING          - attachment(s). (NULL)
  -i STRING          - inline part(s) - add text file(s) here. (NULL)
  -r                 - use "multipart/related" if possible. (NOTSET)
  -D STRING          - switch debug logs on. (NULL)
note: please use filename extensions if possible
#
EDIT: Ich habe gerade bemerkt, dass die Parameter -t, -m -a und -w offenbar von der Box ignoriert werden:
Code:
/var/flash/calllog: line 8: -t: not found
Die Mail wird also stur an den im FB-Menü eingetragenen Adressaten geschickt. :mad:

Joe
 
Zuletzt bearbeitet:
mailer

Also ich muss das Thema nochmal etwas aufwärmen und brauch nochmals nen guten Tip. Ich habe z.Z. in der php.ini

Code:
sendmail_path = /sbin/mailer -i /var/media/ftp/Corsair-VoyagerGT-01/apache/htdocs/_private/email.txt

diese email.txt erzeugt z.Z. ein php.script
PHP:
<?php
############################################################################
#
#  phpmailer
#
############################################################################


sendEmail() ;


############################################################################
# Konfiguration
############################################################################

function sendEmail(){

// Zu Testzwecken
// 1 => Der Inhalt der eMail wird in eine Textdatei geschrieben (wenn Sie offline testen möchten)
// 0 => Die eMail wird verschickt

$testOffline = 0 ;


// Geben Sie hier ein gültige eMail-Adresse von sich an
// Diese eMail-Adresse wird dann auch als Absender-eMail-Adresse angezeigt, wenn die nachfolgende
// Option nicht aktiviert (also auf 1 gesetzt) wird.
// (Dies ist bei manchen Providern Voraussetzung, um Spamming zu verhindern)

$emailFrom = "[email protected]" ;


// eMail-Adresse des Versenders als Absenderadresse nutzen (um beispielsweise direkt anworten zu können)
// 1 => Ja  | 0 => Nein

$useSendersEmail = 1 ;


// Geben Sie nachfolgend den Namen des Formularfeldes an, in das der Absender seine
// eMail-Adresse einträgt (Voreinstellung ist: eMail || BEACHTEN SIE GROSS- & KLEINSCHREIBUNG!!!!).
// Die Eingabe ist nur dann notwendig, wenn Sie die vorangehende Option ($useSendersEmail) auf "1" setzen!

$mailFromField = 'eMail' ;


// SPAM-MISSBRAUCH-SCHUTZ
// Aktivieren Sie den Schutz vor einem Missbrauch des Formmailers durch Spammer!
// Genauere Informationen finden Sie in der README.txt
// 1 => aktiviert  | 0 => NICHT aktiviert

$spamProtect = 1 ;


// Empfänger eMail-Adressen, Subject, Zielseite nach dem Versenden der eMail
// Soll KEINE Kopie der eMail an eine zweite Adresse geschickt werden, so löschen Sie die "Dummy"-eMail-Adresse
// "kopie@ihre_domain.de", so daß nur noch die beiden Hochstriche stehen bleiben ("").
// Ansonsten geben Sie dort bitte eine gültige eMail-Adresse ein.
// Genauere Informationen finden Sie in der README.txt

$send_dat = array(

	"dat1" => array("[email protected]", "", "Kontakt über die Internetseite", "./danke.htm"),
	#"dat2" => array("", "", "", ""),
	#"dat3" => array("", "", "", ""),
);


// Felder aus dem Formular, die NICHT mit der eMail übertragen werden sollen.
// TIPP: Verwenden Sie grafische Buttons als "Absendeknopf", so werden die Koordinaten
// der Klickstelle mit der eMail verschickt. Um diesen (unschönen) Effekt zu umgehen,
// geben sie für den grafischen Button  name="senden" ein.

$ignoreFormFields = array('send_index', 'senden', 'submit', 'check_form','Submit','senden_y','senden_x');



############################################################################
# Programmablauf (ab hier nichts mehr ändern)
############################################################################
	
	// Datum (+deutsche Tage)

	$name_tag = array('Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag');
	$day = $name_tag[date('w')];
	$year = date('Y');  
	$n = date('d');
	$month = date('m');
	$time = (date('H:i'));


	// Prüfung, welches send_dat-Array zum senden verwendet werden soll
	// Default: dat1

	!empty($_POST['send_index']) ? $st = $_POST['send_index'] : $st = 'dat1';


	// Versende Daten

	$mailto = $send_dat[$st][0]; // Ziel-eMail-Adresse
	$mail_cc = $send_dat[$st][1]; // 2. Ziel-eMail-Adresse (Kopie)
	$subject = $send_dat[$st][2]; // Subjekt
	$redirect = $send_dat[$st][3]; // Zielseite nach eMailversand


	// Formularfelder auslesen und in die eMail "einsetzen"
	// Zu ignorierende Felder werden NICHT eingesetzt

	while (list($fieldName, $fieldValue) = each($_POST)) {
	
		if (in_array($fieldName, $ignoreFormFields) || empty($fieldValue)) continue;
		$message .= "== $fieldName =====\r\n$fieldValue\r\n\r\n\r\n";
	}
	

	// Funktion zum prüfen des Inhaltes aufrufen

	$message = cleanContent($message, $spamProtect);


	// Datum und Zeit voranstellen

	$message = ":: Gesendet am $day, den $n.$month.$year - $time Uhr ::\r\n\r\n$message";


	// Weiterleitung auf eine andere Seite

	Header("Location: $redirect");


	// Absender-eMail-Adresse

	($useSendersEmail == 1) ? $emailFrom = $_POST[$mailFromField] : $emailFrom = $emailFrom;
	$header = "From: $emailFrom";


	// Kopie schicken

	if (!empty($mail_cc)) {
	
		$header .= "\r\n";
		$header .= "Cc: $mail_cc";
	}


	// eMail verschicken

	if ($testOffline == '0') {
	
		$testmail = fopen('./_private/email.txt', 'w+');
		fwrite($testmail, $message);
		fclose($testmail);[/COLOR]
		@mail ($mailto, $subject, $message, $header) || die('<b>Es ist ein Fehler aufgetreten, bitte versuchen Sie es erneut </b>');
}


	// eMail zum testen in ein Textfile schreiben

	if ($testOffline == '1') {
	
		$testmail = fopen('./_private/email.txt', 'w+');
		fwrite($testmail, $message);
		fclose($testmail);
	}

}



############################################################################
# Inhalte "bereinigen"
############################################################################

function cleanContent($content, $spamProtect) {
	
	
	$content = str_replace('<br>', "\r\n", $content);
	$content = stripslashes(strip_tags($content));
	
	// Spam-Missbrauch-Schutz aufrufen
	if($spamProtect == 1) { $content = checkContent($content); }
	
	return $content;
	
}



############################################################################
# Spam-Missbrauch-Schutz 
############################################################################

function checkContent($tpcontent) {
	

	// kritische Zeichen entfernen

	$checkit = array("/bcc\:/i","/cc\:/i","/to\:/i");
	$tpcontent = preg_replace($checkit, "", $tpcontent);


	// Script-Abbruch bei eindeutigem Spamversuchen

	if (preg_match("/(MIME\-Version\:|Content\-Type\:)/i", $tpcontent)) {
		die('Ihre Angaben enthalten kritische Zeichen! Aus Gründen des Spamschutzes wird Ihre Nachricht nicht versendet.');
	}

	if (empty($tpcontent)) {
		die('Es wurden keine Angaben gemacht! Ein leeres Formular wird nicht versendet.');
	}
	
	return $tpcontent ;
	
}



?>

Das grünmarkierte im php-script (unteres Viertel) erzeugt eine Textdatei, das rotmarkierte aktiviert den Fritz!Box eigenen Mailer. Bisher habe ich den Path zur email.txt in der php.ini (siehe code) angegeben und der Versand klappt.

Ich möchte aber die Textdatei im php-Script angeben, sowas wie:
Code:
@mail (-i /var/media/ftp/Corsair-VoyagerGT-01/apache/htdocs/_private/email.txt) || die('<b>Es ist ein Fehler aufgetreten, bitte versuchen Sie es erneut!</b>');

Wie muss ich den sendmail_path anpassen und wie muss die Zeile im php-Script aussehen?

Oder kann man per php-Script eine sendmail.sh ausführen und wie müßte der code aussehen?

Code:
#! /bin/sh
/sbin/mailer \
  -s " Fritz.Box Mailer " \
  -i '$VARIABLE' \
#  2> /dev/null
 
Zuletzt bearbeitet:
EDIT: Ich habe gerade bemerkt, dass die Parameter -t, -m -a und -w offenbar von der Box ignoriert werden...

Das stimmt so nicht.
Da muss ein Übergabefehler vorliegen, vielleicht keine Hochkommas, oder Anführungsstriche gesetzt?, wenn die Daten korrekt sind, verbindet der Mailer problemlos, unabhängig von den Datensätzen aus dem Webconfig. (Getestet auf fast allen Boxen von 30er - 71er Serie)

Gruß Lemur
 
Hallo fr@ank-pcn

ich habe genau das selbe Problem wie du gehabt. Auf deinen Hinweis hin, das ganze mit einem Shell-Skript zu machen, habe ich etwas rumgewerkelt und bin zu folgenden Ergebnis gekommen.

Ich habe mir in den Ordnern wo auch mein PHP-Formular liegt eine Skript-Datei angelegt, die wie folgt aussieht.

PHP:
/sbin/mailer -s"$1" -f"$2" -t"$3" -m"$4" -a"$5" -w"$6" -i"$7"

Aus dem PHP-Formular rufe ich dann, sofern alles Daten eingegeben wurden folgendes auf:

PHP:
$output = shell_exec("./run.sh \"Kopie Ihrer Anfrage: $betreff\" \"$emailTo\" \"$email\" \"$smtpServer\" \"$smtpUN\" \"$smtpPW\" \"$emailText\"");

Sieht zwar etwas komisch aus, aber es funktioniert einwandfrei für meine Zwecke.

Als Tipp noch. Um die Paramter zu kontrollieren, welche vom PHP-Formular beim shell_exec() aufruf übergeben wurden kann das Shell-Skript noch wie folgt angepasst werden:

PHP:
/sbin/mailer -s"$1" -f"$2" -t"$3" -m"$4" -a"$5" -w"$6" -i"$7"
echo Subject: "$1"
echo From: "$2"
echo To: "$3"
echo SMTP: "$4"
echo UN: "$5"
echo PW: "$6"
echo Text: "$7"

Mans sollte jedoch die echo's wieder entfernen, da irgendwie (warum auch immer) die E-Mail zwar versendet wird, aber es wird eine komisches Attachment mit angefügt.

Ich hoffe ich konnte dir weiterhelfen und für Rückfragen stehe ich gerne bereit.

Viele Grüße
 
Mailwrapper, passt

Hi @fritzpas,

da war was was richtig weh tut!:rolleyes: :blonk:

Das PHP- Script war so geschrieben das die E-Mailadresse aus dem Formular als Absendeadresse Option -f genutzt wurde (Um direkt zu antworten zu können). Dad funzt bei mir nur wen da meine eigene Abseneadresse drin steht, passend zum SMTP- Server und PW. Jetzt passt's.

THX für deine Unterstützung
 
Hallo zusammen

Ich für meinen Teil habe das folgender Maßen gelöst.
Will man den Mailer nutzen, benötigt man keine Einstellungen in der php-ini und auch keine Sendmail. Der mailer ist ja sozusagen "Sendmail".

Im Prinzip ist es so wie @fritzpas es erklärt hat.

Jede Kontaktseite ist im Prinzip gleich aufgebaut und besteht meistens aus folgenden Eingabepunkten, die im php-skript mit Variablen versehen sind.

Beispiel

Name=$name
email=$mail
betreff=$betreff
inhalt=$inhalt

Als Empfänger gibt man noch seine eigene mail ein.

Hat man in seinem Kontakt-Skript die richtigen Variablen erkannt setzt man folgenden php-code an die stelle wo @mail aufgerufen wird.


PHP:
$fp=fopen("/var/media/ftp/uStor01/apache/dein pfad/inhalt.txt","a+");

Ich speichere den Inhalt vorübergehend ab. (Der Pushserice arbeitet genau so)

PHP:
exec('/sbin/mailer -t '.$empfaenger.' -f \''.$name.'\'\<'.$mail.'\> -s \''.$betreff.'\' -i /var/media/ftp/uStor01/apache/dein pfad/inhalt.txt');

Das ist der Aufruf des mailers und damit der Versand des Kontaktes.

PHP:
unlink("/var/media/ftp/uStor01/apache/dein pfad/inhalt.txt");

Danach lösche ich den abgeseicherten Inhalt und fertig.

Soll die Mail auch noch an den Versender geschickt werden, ersetzt man die Variable $empfänger durch die Variable $mail , setzt den gesamten Aufruf des mailers unter den ersten Aufruf und schon verschickt die Fritz das Kontaktformular an beide Adressen.

Ich habe bis jetzt noch keine Probleme damit gehabt. Der Pushserice kann auch aus sein.

cio ottoquast
 

Statistik des Forums

Themen
245,762
Beiträge
2,239,382
Mitglieder
372,973
Neuestes Mitglied
DeSpo_0108
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.