<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <META NAME="GENERATOR" CONTENT="lfparser_2.38"> <META NAME="LFCATEGORY" CONTENT="UNIXBasics"> <link rel="icon" href="../../common/images/lf-16.png" type="image/png"> <TITLE>lf308, UNIXBasics: Automail für fli4l</TITLE> <style type="text/css"> <!-- td.top {font-family: Arial,Geneva,Verdana,Helvetica,sans-serif; font-size:12 } pre { font-family:monospace,Courier } pre.code { font-family:monospace,Courier;background-color:#aedbe8; } p.cl { color:#EE9500 } a.nodec { text-decoration:none } p.trans { font-size:8pt; text-align:right } p.clbox { width:50%; alignment:center; background-color:#FFD700; border-style:none; border-width:medium; border-color:#FFD700; padding:0.5cm; text-align:center } p.code { width:80%; alignment:center; background-color:#aedbe8; border-style:none; border-width:medium; border-color:#aedbe8; padding:0.1cm; text-align:left } p.foot { background-color:#AAAAAA; color:#FFFFFF; border-style:none; border-width:medium; border-color:#AAAAAA; padding:0.5cm ; margin-top:0.1cm; margin-right:1cm; margin-left:1cm; text-align:center } .mark { background-color:#e6e6ff } --> </style> </HEAD> <BODY bgcolor="#ffffff" text="#000000"> <!-- this is generated html code. NEVER use this file for your translation work. Instead get the file with the same article number and .meta.shtml in its name. Translate this meta file and then use lfparser program to generate the final article --> <!-- lfparser can be obtained from http://www.linuxfocus.org/~guido/dev/lfparser.html --> <!-- this is used by a number of tools: =LF=AUTHOR: Stefan Blechschmidt =LF=CAT___: UNIXBasics =LF=TITLE_: Automail für fli4l =LF=NUMBER: 308 =LF=ANAME_: article308.shtml --> <!-- 2pdaIgnoreStart --> <!-- start navegation bar, style=2 --> <!-- top navegation bar --> <TABLE summary="topbar_1" cellspacing="0" cellpadding="0" border="0" align="center" width="90%"> <TR bgcolor="#2e2292"> <TD class="top"><TABLE summary="topbar_1_logo" cellspacing="0" cellpadding="0" border="0" width= "100%"> <TR><TD width="319"><IMG src="../../common/images/logolftop_319x45.gif" alt="[LinuxFocus-icon]" width="319" height="45" align="left" border="0"></TD> <TD class="top"> <TABLE summary="topbar_1_links" width="100%"> <TR align="right"> <TD class="top"> <A class="nodec" href="index.shtml"><FONT color= "#DDDDDD" size="2"><--</FONT></A> | <A class="nodec" href="../index.shtml"><FONT color= "#DDDDDD" size="2">Home</FONT></A> | <A class="nodec" href="../map.html"><FONT color= "#DDDDDD" size="2">Plan</FONT></A> | <A class="nodec" href="../indice.html"><FONT color= "#DDDDDD" size="2">Index</FONT></A> | <A class="nodec" href="../Search/index.html"><FONT color= "#DDDDDD" size="2">Suchen</FONT></A> </TD> </TR> <TR align="right"> <TD class="top"> <HR width="100%" noshade size="1"> </TD> </TR> </TABLE> </TD> </TR> </TABLE> </TD> </TR> </TABLE> <!-- end top navegation bar --> <!-- blue bar --> <TABLE summary="topbar_2" cellspacing="0" cellpadding="0" border="0" align="center" width="90%"> <TR bgcolor="#00ffff"> <TD><IMG src="../../common/images/transpix.gif" width="1" height= "2" alt=""></TD> </TR> </TABLE> <!-- end blue bar --> <!-- bottom navegation bar --> <TABLE summary="topbar_3" cellspacing="0" cellpadding="0" border="0" align="center" width="94%"> <TR bgcolor="#000000"> <TD> <TABLE summary="topbar_3_links" cellspacing="0" cellpadding="1" border="0" width= "100%"> <TR align="center"> <TD WIDTH="20%"><A class="nodec" href="../News/index.shtml"><FONT color= "#FFFFFF">Nachrichten</FONT></A> </TD> <TD WIDTH="5%"><FONT color="#FFFFFF">|</FONT> </TD> <TD WIDTH="20%"><A class="nodec" href="../Archives/index.html"><FONT color= "#FFFFFF">Archiv</FONT></A> </TD> <TD WIDTH="5%"><FONT color="#FFFFFF">|</FONT> </TD> <TD WIDTH="20%"><A class="nodec" href="../Links/index.shtml"><FONT color= "#FFFFFF">Links</FONT></A> </TD> <TD WIDTH="5%"><FONT color="#FFFFFF">|</FONT> </TD> <TD WIDTH="20%"><A class="nodec" href="../aboutus.html"><FONT color= "#FFFFFF">Über uns</FONT></A> </TD> </TR> </TABLE> </TD> </TR> </TABLE> <!-- end bottom navegation bar --> <!-- stop navegation bar --> <!-- SSI_INFO --> <!-- tr_staticssi include virtual --> <!-- tr_staticssi exec cmd --> <!-- addedByLfdynahead ver 1.4 --><TABLE ALIGN="right" border=0><TR><TD ALIGN="right"><FONT SIZE="-1" FACE="Arial,Helvetica">Dieses Dokument ist verfübar auf: <A href="../../English/September2003/article308.shtml">English</a> <A href="../../Castellano/September2003/article308.shtml">Castellano</a> <A href="../../Deutsch/September2003/article308.shtml">Deutsch</a> <A href="../../Francais/September2003/article308.shtml">Francais</a> <A href="../../Nederlands/September2003/article308.shtml">Nederlands</a> <A href="../../Turkce/September2003/article308.shtml">Turkce</a> </FONT></TD></TR></TABLE><br> <!-- SSI_INFO STOP --> <!-- 2pdaIgnoreStop --> <!-- SHORT BIO ABOUT THE AUTHOR --> <TABLE ALIGN=LEFT BORDER=0 WIDTH="190" summary="about the author"> <TR> <TD> <IMG SRC="../../common/images/stefan_blechschmidt.jpg" ALT="Stefan Blechschmidt" width="100" height="121"> <BR>von Stefan Blechschmidt <br> <small><sb(at)sbsbavaria.de></small> <BR><BR> <I>Über den Autor:</I><BR> <!-- aboutauthor_start --> <P> Als gelernter Elektriker hat man mich 1990 vor einen CAD Arbeitsplatz gesetzt, um eine Schaltanlage zu planen. Anscheinend habe ich mich damals mit einem noch unbekannten Virus infiziert, und das ist gut so. </P> <!-- aboutauthor_stop --> <!-- TRANSLATED TO de --> <!-- TRANSLATED TO STOP --> <BR><i>Inhalt</i>: <UL> <LI><A HREF="#308lfindex0">Kurze Beschreibung der Umgebung</A></LI> <LI><A HREF="#308lfindex1">Das Problem</A></LI> <LI><A HREF="#308lfindex2">Die Überlegung</A></LI> <LI><A HREF="#308lfindex3">Der Lösungsvorschlag</A></LI> <LI><A HREF="#308lfindex4">Anpassung Router</A></LI> <LI><A HREF="#308lfindex5">Anpassung Mailserver</A></LI> <LI><A HREF="#308lfindex6">Anpassungen mailstart.pl</A></LI> <LI><A HREF="#308lfindex7">Test</A></LI> <LI><A HREF="#308lfindex8">Download</A></LI> <LI><A HREF="#308lfindex9">Links / Referenzen </A></LI> <LI><A HREF="http://cgi.linuxfocus.org/cgi-bin/lftalkback?anum=308">Talkback für diesen Artikel</A></LI> </UL> </TD></TR></TABLE> <!-- HEAD OF THE ARTICLE --> <br> <table border="0"><tr><td> <H2>Automail für fli4l</H2> <IMG SRC="../../common/images/article308/schema.png" ALT="Automail mit fli4l" width="400" height="217"> <!-- ABSTRACT OF THE ARTICLE --> <P><i>Zusammenfassung</i>: <P> <!-- articleabstract_start --> <p> Wer verwendet ihn nicht den Ein-Diskettenrouter von <a href="http://www.fli4l.de">http://www.fli4l.de/</a>. Sicher kennt auch jeder das Problem das entsteht, wenn man den Router als <i>dial-on-demand</i> Router in einem vorhandenen Netzwerkverbund mit internem Mailserver verwendet. Wenn der Router eine Verbindung aufbaut, sollte auch der Mailserver davon erfahren, um seine Mails zu versenden und abzuholen. <br> Dieser Artikel soll eine Möglichkeit beschreiben, wie man dieses Problem lösen kann.</p> <!-- articleabstract_stop --> <br><!-- HR divider --><center><font color="#8282e0"><b>_________________ _________________ _________________</b></font></center><br> </td></tr></table> <!-- BODY OF THE ARTICLE --> <A NAME="308lfindex0"> </A> <H2>Kurze Beschreibung der Umgebung</H2> <p> Das Titelbild zeigt eine schematische Darstellung des Netzwerks um das es in diesem Artikel geht. <i>WS1-3</i> stellen Workstationen dar, die eine Verbindung über den Router ins WWW haben. Der <i>Service-Host</i> ist für das Handling der Mails intern und extern zuständig. Das Versenden wird vom <i>MTA</i> erledigt. Abgeholt wird mit <i>fetchmail</i> und anschließend mit <i>procmail</i> sortiert. Die Mailboxen auf dem Service-Host werden über <i>POP3</i> bzw. <i>IMAP</i> den Workstationen zur Verfügung gestellt.</p> <A NAME="308lfindex1"> </A> <H2>Das Problem</H2> <p> Baut einer der Workstationen eine Verbindung ins WWW auf, kriegt in der Regel der Service-Host nichts davon mit. Man könnte zwar über einen <i>cronjob</i> den Service-Host anweisen, Mails zu festgelegten Zeiten zu versenden bzw. abzuholen. Eleganter wäre es aber, diesen bei einer Einwahl ins Netz zu informieren, so dass er seine Arbeiten erledigen kann.</p> <p> Da der Router als Diskettenrouter betrieben wird, scheidet ein aufwendiges Script oder Programm zur Steuerung des Mailservers über den Router aus.</p> <A NAME="308lfindex2"> </A> <H2>Die Überlegung</H2> <p> Um den Service-Host über die Einwahl zu informieren, müsste man lediglich eine Anfrage machen, der einen Prozess startet, um die Mails versenden bzw. abholen zu können.</p> <A NAME="308lfindex3"> </A> <H2>Der Lösungsvorschlag</H2> <p> Für <i>fli4l</i> steht das Programm <i>wget</i> zur Verfügung, das mit seiner Größe von ca. 100 kB leicht noch auf die Diskette passt. Man kann mit <i>wget</i>, bei einer Einwahl zugleich eine Verbindung zu dem Service-Host aufbauen. Hierzu wird auf dem Service-Host mit <i>inetd</i> ein Port geöffnet, der auf die Verbindung vom Router wartet. Bei einer Verbindung wird ein Script gestartet, das über weitere Prozesse die eMails versendet und abgeholt.</p> <p> Das Script wurde in <a href="http://www.perl.org/">Perl</a> erstellt, du kannst es dir <a href="../../common/src/article308/mailstart.pl.gz">hier (mailstart.pl.gz)</a> downloaden.</p> <!-- Systemanpassung --> <A NAME="308lfindex4"> </A> <H2>Anpassung Router</H2> <p> Bei einer Einwahl wird die Datei <tt>.../opt/etc/ppp/ip-up </tt> abgearbeitet. Hier ist der richtige Platz, um eine Verbindung zu unserem Service-Host aufzubauen. Mit dem Hinzufügen der Zeile:</p> <pre class="code"> wget -t 1 --spider MAILSERVER:PORT/xyz &> /dev/null</pre> <p> ist das auch schon erledigt. </p> <p><b>Kommando Erklärung wget</b></p> <pre class="code"> * Option -t 1 Mit dieser Option wird ein Versuch unternommen, das Programm mailstart auf dem Mailserver zu erreichen. * Option --spider Mit dieser Option wird die angeforderte Seite nicht heruntergeladen. Es wird lediglich überprüft, ob die Seite vorhanden ist.</li> * MAILSERVER:PORT/xyz Hier wird der Mailserver und der Port angegeben, über den das Programm angesprochen wird. Die Angabe <i>xyz</i> bezeichnet die Datei, die geholt werden soll. Diese Angabe ist eigentlich egal, wird sie weggelassen holt wget standardmäßig die Datei index.html.</li> * /dev/null Die Ausgaben von wget werden ins Nirvana befördert. Man kann diese Angabe auch weggelassen, um zu sehen was wget an Daten empfängt. </pre> <A NAME="308lfindex5"> </A> <H3>Anpassung Mailserver</H3> <p> Auf dem Mailserver wird über dem Superserver <i>inetd</i> das Programm mailstart <a href="#v1">[1]</a> gestartet. Hierzu müssen wir die beiden Dateien <tt>/etc/services</tt> und <tt>/etc/inetd.conf</tt> bearbeiten. <p> <b>/etc/services</b></p> <p> In dieser Datei wird der Port bestimmt, auf den <i>wget</i> zugreifen soll. Mit der Zeile:</p> <pre class="code"> mailstart 4000/tcp # Mailstart</pre> <p> ist das auch schon erledigt.</p> <p> <b>/etc/inetd.conf</b></p> <p> In dieser Datei wird das Programm angegeben, das gestartet werden soll. Hierbei überwacht <i>inetd</i> die Ausführung und protokolliert dies in <i>/var/log/syslog</i> mit.</p> <p> Mit der Zeile:</p> <pre class="code"> mailstart stream tcp nowait root /usr/sbin/tcpd /root/bin/mailstart</pre> <p> ist dieser Schritt auch erledigt. Hierbei muss der erste Name derselbe sein wie er in der Datei <i>/etc/services</i> notiert wurde.</p> <!-- Programmanpassung --> <A NAME="308lfindex6"> </A> <H2>Anpassungen <i>mailstart.pl</i></H2> <p> Über Variable kann das Programm an den jeweiligen Server angepasst werden. </p> <p> <b>$protokoll</b></p> <p> Mit der Variable <i>$protokoll</i> kann bestimmt werden, ob die Aufrufe mitgeschrieben werden sollen. Wird die Variable auf <b>1</b> gesetzt, werden die Aufrufe in der Datei <i>/var/log/mailstart.log</i> mitgeschrieben. Ist die Variable auf <b>0</b> gesetzt, wird kein Protokoll erstellt.</p> <pre class="code"> Voreinstellung: 1 Protokoll erstellen</pre> <p> <b>$protokoll_ziel</b></p> <p> Mit dieser Variable kann man das Ziel des Protokolls bestimmen.</p> <pre class="code"> Voreinstellung: /var/log/mailstart.log</pre> <p> <b>$mailholen</b></p> <p> Hier wird das Programm eingetragen, mit dem die eMails abgeholt werden. Der Benutzer, der das Programm startet, ist root bzw. der, der unter <i>/etc/inetd.conf</i> eingetragen wurde. Will man einen anderen Benutzer verwenden, so ist der Befehl mit einem <nobr><tt> su USER -c \"BEFEHL PARAMETER\" </tt></nobr> zu starten. Wenn der Befehl aus mehreren Wörtern besteht, so muss man diese in Anführungszeichen setzen. Diese Anführungszeichen sind mit einem <b>\</b> zu schützen.</p> <pre class="code"> Voreinstellung (eine Zeile):<br> <font size="-1">su postmaster -c \"fetchmail -t 40 -a -L /var/log/fetchmail/fetchmail.log -f /home/postmaster/.fetchmailrc\"</font></pre> <p> <b>$mailsenden</b></p> <p> Hier wird das Programm eingetragen, mit dem die eMails versendet werden. Der Benutzer der das Programm startet, ist root bzw. der, der unter <i>/etc/inetd.conf</i> eingetragen wurde. Will man einen anderen Benutzer verwenden, so ist der Befehl mit einem<tt> su USER -c \"BEFEHL PARAMETER\"</tt> zu starten. Wenn der Befehl aus mehreren Wörtern besteht, so muss man diese in Anführungszeichen setzten. Diese Anführungszeichen sind mit einem <b>\</b> zu schützen.</p> <pre class="code"> Voreinstellung: sendmail -q</pre> <p> Übrigens, im Programm ist eine kleine POD Dokumentation eingearbeitet, die eine Beschreibung in Kurzfassung ausgibt. Du kommst zu dieser Beschreibung mit <tt>perdoc mailstart</tt>. </p> <A NAME="308lfindex7"> </A> <H2>Test</H2> <p> Vor dem Testen sollte zuerst der Superserver neu gestartet werden. Ein <tt>/etc/init.d/inetd restart</tt> dürfte reichen. Nun kannst du mit <nobr><tt>telnet localhost mailstart</tt></nobr> testen, ob der Server antwortet. Du solltest nun eine Ausgabe ähnlich dieser bekommen.</p> <pre class="code"> Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. HTTP/1.1 220 OK Date: Sun, 20 Jul 2003 10:45:46 GMT Server: mailstart/perl (sbsbavaria) Last-Modified: Sun, 20 Jul 2003 10:45:46 GMT Content-Type: text/txt Content-Length: 11 1234567890 Connection closed by foreign host. </pre> <p> Das war's auch schon, ich hoffe du kommst mit dieser Beschreibung zu recht. Wenn nicht, haben wir ein Problem.<br> - Du, weil es nicht funktioniert. <br> - Ich, weil es mir nicht gelungen ist, die Beschreibung ordentlich zu erstellen :-).</p> <A NAME="308lfindex8"> </A> <H2>Download</H2> <a name="v1"></a> <ul><li><a href="javascript:history.back()">[1]</a> <a href="../../common/src/article308/mailstart.pl.gz">mailstart.pl.gz</a> - Perlprogramm zum Steuern des Service-Hosts</ul> <A NAME="308lfindex9"> </A> <H2>Links / Referenzen </H2> <ul><li><a href="http://www.fli4l.de/">www.fli4l.de</a> - fli4l Homepage <li><a href="http://www.perl.org/">www.perl.org</a> - Perl Homepage</ul> <!-- vim: set sw=2 ts=2 et tw=74: --> <!-- 2pdaIgnoreStart --> <A NAME="talkback"> </a> <h2>Talkback für diesen Artikel</h2> Jeder Artikel hat seine eigene Seite für Kommentare und Rückmeldungen. Auf dieser Seite kann jeder eigene Kommentare abgeben und die Kommentare anderer Leser sehen: <center> <table border="0" CELLSPACING="2" CELLPADDING="1" summary="tb-button-outerpart"> <tr BGCOLOR="#C2C2C2"><td align=center> <table border="3" CELLSPACING="2" CELLPADDING="1" summary="tb-button"> <tr BGCOLOR="#C2C2C2"><td align=center> <A href="http://cgi.linuxfocus.org/cgi-bin/lftalkback?anum=308"><b> Talkback Seite </b></a> </td></tr></table> </td></tr></table> </center> <HR size="2" noshade> <a style="background-color:#bdc6d5" href="index.shtml"><--, zurück zum index dieser Ausgabe </a><br><HR size="2" noshade> <!-- ARTICLE FOOT --> <CENTER><TABLE WIDTH="98%" summary="footer"> <TR><TD ALIGN=CENTER BGCOLOR="#bdc6d5" WIDTH="50%"> <A HREF="../../common/lfteam.html">Der LinuxFocus Redaktion schreiben</A> <BR><FONT COLOR="#FFFFFF">© Stefan Blechschmidt, <a href="../../common/copy.html">FDL</a> <BR><a href="http://www.linuxfocus.org">LinuxFocus.org</a></FONT> </TD> <TD BGCOLOR="#bdc6d5"> <!-- TRANSLATION INFO --> <font size=2>Autoren und Übersetzer:</font> <TABLE summary="translators"> <tr><td><font size="2">de --> -- : Stefan Blechschmidt <small><sb(at)sbsbavaria.de></small></font></td></tr> </TABLE> </TD> </TR></TABLE></CENTER> <p><font size=1>2003-08-13, generated by lfparser version 2.38</font></p> <!-- 2pdaIgnoreStop --> </BODY> </HTML>