# [solved]Systemmails und andere über öffentlichen Mailserver

## markusk21

Hallo liebe Leute,

Ich steig durch das Angebot der Mail-Programme nicht durch.

Ich möchte, dass Systemnachrichten und meine mediawiki Emails über den smtp-server meines Providers (oder auch web.de) verschickt werden. Kann doch nicht so schwer sein *grummel*

Ich habe mir postfix eingerichtet, aber wie es scheint, ist das ein Mail-server der die Emails für eingerichtete Mailboxen auf Festplatte ablegt. Ich hab versucht, die Sachen via pop3-Sammeldienst zu holen, klappt aber nicht.

Diese Anleitung hab ich befolgt: http://www.stonki.de/Gentoo-Postfix-Howto.220.0.html

Postfix-admin ist installiert und ich kann mich mit den Mail-Adressen anmelden. Die Mails landen auf der Festplatte in den jeweiligen Verzeichnissen.

Ich vermute, dass die folgenden Dateien die nötigen Hinweise geben, wenn Infos fehlen liefere ich die natürlich:

cat /etc/postfix/main.cf:

 *Quote:*   

> queue_directory = /var/spool/postfix
> 
> command_directory = /usr/sbin
> 
> daemon_directory = /usr/lib/postfix
> ...

 

Ein kleiner Schubs in die richtige Richtung? 

P.S. hab inzwischen rausgefunden, dass web.de keine Mails von dynamischen IPs annimmt. Das wird also nichts. Aber per Sammeldienst?Last edited by markusk21 on Tue Feb 24, 2009 10:58 am; edited 3 times in total

----------

## schachti

Für Deinen Zweck reicht auch ssmtp - das läuft hier auf meiner Desktop-Kiste super und verschickt die Mails über gmx.

/etc/ssmtp/revaliases:

```

root:ADRESSE@gmx.de:mail.gmx.net:465

```

/etc/ssmtp/ssmtp.conf:

```

rewriteDomain=

root=ADRESSE@gmx.de

mailhub=mail.gmx.net:465

hostname=mail.gmx.net:465

UseTLS=YES

AuthUser=ADRESSE@gmx.de

AuthPass=PASSWORT

FromLineOverride=YES

```

Sollte sich für andere Provider leicht anpassen lassen. Evtl. musst Du weitere Benutzer zu /etc/ssmtp/revaliases hinzufügen - ich habe das damals Brute Force mit

```

cat /etc/passwd | awk -F ':' '{print $1 ":ADRESSE@gmx.de:mail.gmx.net:465"}' >> /etc/ssmtp/revaliases

```

gemacht.

----------

## markusk21

Ja, nach einigem Hin und Her sendet ssmtp jetzt endlich an web.de (ohne verschlüsselung und über den normalen Port 25:() Danke, schachti!

Aber mein Mediawiki immer noch nicht.

Ich bekomme immer 

 *Quote:*   

> E-Mail-Adresse bestätigen (Authentifizierung)
> 
> Aus TrampolinWiki
> 
> Wechseln zu: Navigation, Suche
> ...

 

Die Einstellungen in der LocalSettings.php sind: 

 *Quote:*   

> $wgEnableEmail      = true;
> 
> $wgEnableUserEmail  = true;
> 
> $wgEnableUserEmail  = true;
> ...

 

ich hab es mit und ohne die wgSMTP-Einstellung versucht.

Mit den wgSMTP-Einstellungen kommt:

 *Quote:*   

> Catchable fatal error: Object of class PEAR_Error could not be converted to string in /www/htdocs/www.trampolinwiki.de/htdocs/mediawiki/includes/GlobalFunctions.php on line 521

 

Von PEAR wird wohl was gebraucht, also:

 *Quote:*   

> pear list
> 
> Installed packages, channel pear.php.net:
> 
> =========================================
> ...

 

Scheinbar findet das mediawiki den ssmtp nicht. Ich hab leider keine Einstellung für den Pfad gefunden, weiß da jemand weiter?

----------

## markusk21

Äh, ok...

Ich hab grad in meiner phpinfo.php gesehen, dass php offensichtlich mit '--without-pear' gebaut ist:

 *Quote:*   

> Configure Command 	 './configure' '--prefix=/usr/lib/php5' '--host=i686-pc-linux-gnu' '--mandir=/usr/lib/php5/man' '--infodir=/usr/lib/php5/info' '--sysconfdir=/etc' '--cache-file=./config.cache' '--with-pcre-regex=/usr' '--enable-maintainer-zts' '--disable-cli' '--with-apxs2=/usr/sbin/apxs2' '--with-config-file-path=/etc/php/apache2-php5' '--with-config-file-scan-dir=/etc/php/apache2-php5/ext-active' '--without-pear' '--disable-bcmath' '--with-bz2' '--disable-calendar' '--without-curl' '--without-curlwrappers' '--disable-dbase' '--disable-exif' '--without-fbsql' '--without-fdftk' '--disable-filter' '--enable-ftp' '--with-gettext' '--without-gmp' '--disable-hash' '--disable-json' '--without-kerberos' '--enable-mbstring' '--with-mcrypt' '--without-mhash' '--without-msql' '--without-mssql' '--with-ncurses' '--with-openssl' '--with-openssl-dir=/usr' '--disable-pcntl' '--disable-pdo' '--without-pgsql' '--disable-posix' '--without-pspell' '--without-recode' '--disable-simplexml' '--disable-shmop' '--with-snmp' '--disable-soap' '--disable-sockets' '--without-sybase' '--without-sybase-ct' '--disable-sysvmsg' '--disable-sysvsem' '--disable-sysvshm' '--without-tidy' '--disable-tokenizer' '--disable-wddx' '--without-xmlrpc' '--without-xsl' '--disable-zip' '--with-zlib' '--disable-debug' '--enable-dba' '--without-cdb' '--with-db4' '--disable-flatfile' '--with-gdbm' '--disable-inifile' '--without-qdbm' '--with-freetype-dir=/usr' '--with-t1lib=/usr' '--disable-gd-jis-conv' '--with-jpeg-dir=/usr' '--with-png-dir=/usr' '--without-xpm-dir' '--with-gd' '--with-imap' '--with-imap-ssl' '--with-ldap' '--without-ldap-sasl' '--with-mysql=/usr' '--with-mysql-sock=/var/run/mysqld/mysqld.sock' '--without-mysqli' '--with-readline' '--without-libedit' '--without-mm' '--with-sqlite=/usr' '--enable-sqlite-utf8' 

 

Ich hab aber weder bei php ein useflag gefunden:

 *Quote:*   

> [ebuild   R   ] dev-lang/php-5.2.8-r2  USE="apache2 berkdb bzip2 cgi cli crypt ctype doc ftp gd gdbm iconv imap ipv6 ldap mysql ncurses nls pcre readline reflection session snmp spl sqlite ssl threads truetype unicode xml xmlreader xmlwriter zlib -adabas -bcmath -birdstep -calendar -cdb -cjk -concurrentmodphp -curl -curlwrappers -db2 -dbase -dbmaker -debug -discard-path -empress -empress-bcs -esoob -exif -fastbuild -fdftk -filter -firebird -flatfile -force-cgi-redirect -frontbase -gd-external -gmp -hash -inifile -interbase -iodbc (-java-external) -json -kerberos -kolab -ldap-sasl -libedit -mcve -mhash -msql -mssql -mysqli -oci8 -oci8-instant-client -odbc -pcntl -pdo -pic -posix -postgres -qdbm -recode -sapdb -sharedext -sharedmem -simplexml -soap -sockets -solid -spell -suhosin -sybase -sybase-ct -sysvipc -tidy -tokenizer -wddx -xmlrpc -xpm -xsl -yaz -zip -zip-external" 0 kB
> 
> 

 

noch bei ufed.

Also wie sag ich emerge dass er php mit pear-unterstützung bauen soll?

----------

## markusk21

Alles zurück...

Scheint doch ok zu sein, weil pear als extra-paket emerged wird. Includepath stimmt auch.

Aber das Problem bleibt - wie krieg ich mediawiki dazu Mails zu verschicken?

----------

## schachti

 *markusk21 wrote:*   

> Ja, nach einigem Hin und Her sendet ssmtp jetzt endlich an web.de (ohne verschlüsselung und über den normalen Port 25:()

 

Hat es mit Verschlüsselung nicht geklappt, oder wolltest Du es ohne Verschlüsselung haben? Ich würde auf jeden Fall eine verschlüsselte Verbindung bevorzugen. Laut http://hilfe.freemail.web.de/sicherheit/ssl/smtp/?si=4GDFW.1lBum2.31neNJ.3K* verwendet Web.de dafür Port 25 (nicht 465 wie in meinem gmx-Beispiel oben).

 *markusk21 wrote:*   

> 
> 
> Die Einstellungen in der LocalSettings.php sind: 
> 
>  *Quote:*   $wgEnableEmail      = true;
> ...

 

Mit diesen Einstellungen wird vermutlich (ich kenne Mediawiki nicht) versucht, selbst die Mails zu senden und nicht den System-Mailer zu nutzen - zum Versand mittels ssmtp sollten die also vermutlich deaktiviert werden.

 *markusk21 wrote:*   

> Scheinbar findet das mediawiki den ssmtp nicht. Ich hab leider keine Einstellung für den Pfad gefunden, weiß da jemand weiter?

 

Vielleicht fehlt Dir nur /bin/mail - falls es daran liegt, sollte die Installation von mailx helfen.

----------

## markusk21

Die Verschlüsselung hab ich nicht hin bekommen. Port 25 hatte ich probiert aber es gibt immer folgende Meldungen:

Mit UseTLS=YES :  *Quote:*   

> SSL_connect: Success
> 
> sendmail: Cannot open smtp.web.de:25

 

Mit UseTLSCert=YES:  *Quote:*   

> Use certfile: No such file or directory
> 
> sendmail: Cannot open smtp.web.de:25
> 
> 

 

mit TLSCert=/etc/ssl/certs/root.pem:  *Quote:*   

> Use PrivateKey: Success
> 
> sendmail: Cannot open smtp.web.de:25

  - ein smtp.pem hab ich nicht und weiß auch nicht ob das wichtig ist. Hab halt ein vorhandenes genommen.

Ja, das mit dem $wgSMTP hab ich auch so verstanden. Ich lass es dann mal kommentiert.

mailx hab ich auch mal installiert und es sendet auch von der Konsole (ohne die obigen Einstellung  :Smile: ) Aber das Mediawiki sendet immer noch nicht.

Ich hab mal versuchsweise im mediawiki-Verzeichnis in includes/UserMailer.php  folgendes geändert:

 *Quote:*   

> 
> 
> //              $mail_object =& Mail::factory('smtp', $wgSMTP);
> 
>                 $mail_object =& Mail::factory('sendmail');
> ...

 

- ohne Effekt.

----------

## schachti

Zum SSL-Problem von ssmtp in Verbindung mit web.de kann ich auf Anhieb nichts sagen - falls ich in den nächsten Tagen Zeit habe lege ich zum Testen mal ein Konto bei web.de an.

Ich habe in der Doku von MediaWiki gelesen, dass die Variable $wgSMTP auf false gesetzt sein muss, damit die mail-Funktion von PHP genutzt wird. Du müsstest also zunächst mal prüfen, ob PHP korrekt konfiguriert ist, siehe auch Anforderungen der mail-Funktion.

----------

## schachti

Nachtrag: Laut http://www.davidhurst.co.uk/2007/06/19/php-mail-and-ssmtp-on-debian-linux/ reicht der Eintrag

```

sendmail_path = /usr/sbin/ssmtp -t

```

in der php.ini Datei (falls unter Gentoo das Binary auch dort installiert wird - ich sitze derzeit an einem Ubuntu-System und kann das nicht überprüfen.

----------

## markusk21

Ich bin einen Schritt weiter...

Dank deines Tipps hab ich mir mal die php.ini angesehen und den sendmail_path gesetzt. 

Jetzt meldet mediawiki schon mal, dass die Mail versendet wurde. 

Dumm nur, dass keine ankommt. Jetzt weiß ich echt nicht weiter.

----------

## schachti

Dann ist eine systematische Fehlersuche angesagt... Kannst Du denn

* direkt mit ssmtp,

* per PHP

Mails verschicken? Stehen in den Logfiles unter /var/log irgendwelche brauchbaren Hinweise? Tauchen weitere Hinweise auf, wenn Du ssmtp mit dem zusätzlichen Schalter -v aufrufst? Evtl. musst Du mit den Debug- und Log-Optionen von MediaWiki experimentieren.

----------

## markusk21

Also, mit ssmtp kann ich senden:

```
echo "Dies ist eine Testmail mit mailx" | sendmail meine.email@web.de
```

kommt an.

Aber php scheint noch ein problem zu haben... in der php.ini steht 

```
sendmail_path = "/usr/bin/sendmail -t "
```

drin.

Folgendes php-script hab ich probiert:

```
<?php

// Die Nachricht

$nachricht = "Zeile 1\Zeile 2\Zeile 3";

// Falls eine Zeile der Nachricht mehr als 70 Zeichen enthälten könnte,

// sollte wordwrap() benutzt werden

$nachricht = wordwrap($nachricht, 70);

// Send

if(mail('Markus@mein.server.de', 'Testmail', $nachricht))

{

   print ("Email ist verschickt worden!");

} else 

{

   print ("Fehler: Email konnte nicht verschickt werden!");

}

?>
```

aber mail) gibt schon ein "false" zurück.

In der /var/log/apache2/error_log hab ich das gefunden:

 *Quote:*   

> [Mon Feb 23 18:58:46 2009] [error] [client 192.168.0.18] File does not exist: /var/www/localhost/htdocs/favicon.ico, referer: http://server/mail.php

 

Aber das hilft nicht wirklich, oder?

Wie kann ich noch mehr loggen?

----------

## Tinitus

 *markusk21 wrote:*   

> Hallo liebe Leute,
> 
> Ich steig durch das Angebot der Mail-Programme nicht durch.
> 
> Ich möchte, dass Systemnachrichten und meine mediawiki Emails über den smtp-server meines Providers (oder auch web.de) verschickt werden. Kann doch nicht so schwer sein *grummel*
> ...

 

Hallo,

bitte die Logs ins Forum Posten, da Deine Links schon jetzt nicht mehr zu erreichen sind.

Sonst kann man die Fehler in "naher Zukunft" schon nicht mehr nachvollziehen!

Danke.G. R.

----------

## schachti

ok, dann liegt der Fehler entweder bei PHP oder im Zusammenspiel von PHP und ssmtp.

Hast Du das PHP-Skript über die Kommandozeile aufgerufen oder über Deinen Browser (--> über den Apache)? Hast Du den Apache nach der Änderung an der PHP-Konfigurationsdatei neu gestartet? Hast Du die richtige Datei editiert? Schau mal in der ausgabe von phpinfo nach, ob da die Angaben stimmen. Probier mal, der sendmail_path-Option noch ein " -i" anzufügen, für eine erweiterte Debugging-Ausgabe noch ein " -v". Hast Du für alle wichtigen Benutzer (speziell für den Benutzer, unter dem der Webserver und PHP ausgeführt werden) einen Eintrag in /etc/ssmtp/revaliases? Sind die Konfigurationsdateien von ssmtp für jeden Benutzer lesbar?

Laut Anforderungen der mail-Funktion soll sendmail beim Kompilieren von php bereits vorhanden sein - ich finde das komisch und glaube nicht, dass das der Grund für Deine Probleme ist, aber vielleicht hilft es trotzdem, PHP neu zu installieren.

 *markusk21 wrote:*   

> 
> 
> In der /var/log/apache2/error_log hab ich das gefunden:
> 
>  *Quote:*   [Mon Feb 23 18:58:46 2009] [error] [client 192.168.0.18] File does not exist: /var/www/localhost/htdocs/favicon.ico, referer: http://server/mail.php 
> ...

 

Nein, das besagt nur, dass Du kein Favicon hast.

 *markusk21 wrote:*   

> 
> 
> Wie kann ich noch mehr loggen?
> 
> 

 

Indem Du den Aufruf von ssmtp um -v erweiterst, bekommst Du von ssmtp eine ausführlichere Antwort.

----------

## markusk21

Bingo!

der apache war in der revaliases nicht eingetragen. Deshalb konnte ich von der Konsole als root auch senden.

Vielen Dank für deine Hilfe, schachti!

----------

## schachti

Gern geschehen - wenn ich demnächst ein bisschen Zeit habe teste ich mal ssmtp mit web.de, das muss irgendwie gehen.   :Wink: 

----------

## schachti

ok, ich habe jetzt auch verschlüsselte SMTP-Verbindungen mit ssmtp zu Web.de hinbekommen. Im Wesentlichen muss man nur UseTLS=YES ersetzen durch UseSTARTTLS=YES. Also zusammengefasst:

/etc/ssmtp/ssmtp.conf:

```

rewriteDomain=

root=ADRESSE@web.de

mailhub=smtp.web.de:25

hostname=smtp.web.de:25

UseSTARTTLS=YES

AuthUser=ADRESSE # hier ohne @web.de!

AuthPass=PASSWORT

FromLineOverride=YES

```

Dazu passend müssen die Einträge in /etc/ssmtp/revaliases die Form

```

LOKALER_USER:ADRESSE@web.de:smtp.web.de:25

```

haben. Dies erreicht man mit

```

cat /etc/passwd | awk -F ':' '{print $1 ":ADRESSE@web.de:smtp.web.de:25"}' > /etc/ssmtp/revaliases

```

----------

## markusk21

super, vielen Dank.

klappt ohne Fehler...

woher hast du denn die option UseSTARTTLS=YES?

ich will ja für das nächste mal wissen, wie ich es selbst rausfinden kann...

----------

## schachti

Aus man ssmtp.conf - dort wird das als mögliche Option aufgeführt, und ich hab's ausprobiert.

----------

