In /etc/sendmail.cf
müssen folgende Zeile geändert werden:
# "Smart" relay host (may be null)
DSemail.aon.at
# class E: names that should be exposed as from this host, even if we masquerade
# class L: names that should be delivered locally, even if we have a relay
# class M: domains that should be converted to $M
#CL root
CL heimo.schoen
# who I masquerade as (null for no masquerading) (see also $=M)
DMaon.at
Zusätzlich wird in der Datei /etc/fetchmail
eingetragen,
von welchen Servern Mails abgeholt werden sollen. Das könnte
wie folgt aussehen:
poll pop.gmx.net proto pop3
user "uuuu" pass pppp is llll
poll mailbox.aon.at proto pop3
user "aon.kkkk" pass pppp is llll
Für uuuu tragen Sie den Usernamen am jeweiligen pop-server ein. Für pppp das Paßwort zu uuuu. Für llll tragen sie den Usernamen ein, für den die Post am lokalen System zur Verfügung gestellt werden soll. Anstatt kkkk tragen Sie Ihre Provider Kundennummer ein (werden Sie zumeist in einem Kuvert erhalten).
Damit nun regelmäßig Mails abgeholt werden habe ich in der
Datei /etc/crontab
folgende Zeile eingetragen:
0-59/1 * * * * root /bin/mailnow
In der Datei /bin/mailnow ist folgender komplexe Inhalt ;-)
#! /bin/bash
# fetch mails from isp
/usr/bin/fetchmail -f /etc/fetchmail
Anm.: fetchmail findet man in der SUSE-Distribution in der Gruppe n unter pop
In der Datei /etc/inet.conf
die Zeile in der popper
gestartet wird, vom Kommentarzeichen befreien. Das -s
kann auch entfernt werden. Ich habe einfach die Zeile kopiert,
und ohne das -s und ohne Kommentarzeichen am Zeilenanfang,
in einer neuen Zeile angefügt. Das sieht dann so aus:
# pop3 stream tcp nowait root /usr/sbin/tcpd /usr/sbin/popper -s
pop3 stream tcp nowait root /usr/sbin/tcpd /usr/sbin/popper
Danach sollten Sie den inetd neu starten mit
/etc/rc.d/inetd restart
Nun sollten Sie von Ihren Clientmaschinen bereits Mails abholen können.
Es gibt zwei Möglichkeiten sendmail dazu zu bewegen als Relay für client Rechner zu fungieren.
In /etc/mail/access
habe ich die folgende Zeile eingefügt:
192.168.1 RELAY
Man muß danach die access.db neu erzeugen. Das macht man mit dem Kommando
makemap hash access < access
Die andere Methode ist in /etc/mail/relay-domains
alle
Maschinen eintragen, von denen aus gemailt werden soll.
Die Datei /etc/mail/relay-domains könnte so aussehen:
ternitz1.ternitz
ternitz1
192.168.1.1
Zur Aktivierung von wwwoffle sollten Sie in rc.config die Environmentvariable START_WWWOFFLE auf yes setzen und die Variable START_SQUID auf no.
Nach dieser Arbeit müssen sie /etc/wwwoffle/wwwoffle.conf
anpassen. Hier werden nur die zu ändernden Rubriken
aufgezählt. Der Rest bleibt unverändert:
Zuerst den Proxyserver
Proxy
{
# http://* = none
http://* = proxy.aon.at:8080
#### Example ####
# Use www.foo.com as a default http proxy server on port 8080
# Except for the foo.com domain which has no proxy.
# http://* = www.foo.com:8080
# *://foo.com = none
}
Nun die zuständigen Hosts beim Provider.
LocalHost
{
# localhost
127.0.0.1
195.3.96.67
195.3.96.68
www.aon.at
#### Example ####
# The server is on www.foo.com, with IP address 11.22.33.44.
# www.foo.com
# 11.22.33.44
}
In der nachfolgenden Rubrik tragen Sie alle Ihre Maschinen ein
die auf den wwwoffle Ihres Gateways zugreifen dürfen. Ich habe
nachstehend folgende Maschinen freigegeben (schreibweise wie
es auch in /etc/hosts
stehen könnte):
AllowedConnectHosts
{
ternitz1.ternitz
ternitz1
192.168.1.1
ternitz2.ternitz
ternitz2
192.168.1.2
#### Example ####
# Only allow connections from hosts in the foo.com domain.
# *.foo.com
}
Da es keinen etwas angeht "welche Applikation" hier surft, sollten Sie die nachfolgend gezeigte Zeile ändern. Braucht ja keiner zu wissen, daß hier ein wwwoffle die Seiten fetcht und in einem Hausnetz zur Verfügung stellt, denn so wie es bei mir, ist immer nur ein client aktiv und die ganze "übung" mit Linux und wwwoffle ist nur als Verlängerung der ISDN Leitung gedacht, da die Telekom mir das Kabel nicht bis ins Arbeitszimmer gelegt hat, sondern nur bis in den Keller. Also steht dort ein kleiner Rechner und wandelt ISDN auf TCP/IP um.
CensorHeader
{
### Example ###
# Don't send the username.
# From =
# Don't send Cookies back
# Cookie =
# Lie about the Browser type.
# User-Agent = WWWOFFLE/2.4
User-Agent = Mozilla/faked
}
Infomrationen zu wwwoffle finden Sie unter /usr/doc/packages/wwwoffle.
Da in der ersten Version dieses HOWTOs beinahe ein "Glaubenskrieg" ausbrach, ob nun wwwoffle oder squid das bessere Tool ist, findet sich hier der Setup für squid. Ich gebe zu, daß ich um squid in dem HOWTO zu dokumentieren, squid auf meinem Gateway installiert habe und er dort heute noch läuft, was aber umso mehr beweist, daß es IMHO egal ist was ich verwende.
Zur Aktivierung von squid sollten Sie in rc.config die Environmentvariable START_SQUID auf yes setzen und die Variable START_WWWOFFLE auf no.
Nach dieser Arbeit müssen sie /etc/squid.conf
anpassen. Hier werden nur die zu ändernden Rubriken
aufgezählt. Der Rest bleibt unverändert:
# TAG: cache_dir
# Usage:
#
# cache_dir Directory-Name Mbytes Level-1 Level2
#
# You can specify multiple cache_dir lines to spread the
# cache among different disk partitions.
#
# 'Directory' is a top-level directory where cache swap
# files will be stored. If you want to use an entire disk
# for caching, then this can be the mount-point directory.
# The directory must exist and be writable by the Squid
# process. Squid will NOT create this directory for you.
#
# If no 'cache_dir' lines are specified, the following
# default will be used: /var/squid/cache.
#
# 'Mbytes' is the amount of disk space (MB) to use under this
# directory. The default is 100 MB. Change this to suit your
# configuration.
#
# 'Level-1' is the number of first-level subdirectories which
# will be created under the 'Directory'. The default is 16.
#
# 'Level-2' is the number of second-level subdirectories which
# will be created under each first-level directory. The default
# is 256.
#
cache_dir /var/squid/cache 400 16 256
So könnten Ihr ACLs aussehen. Das ist nur ein Beispiel und entsprechend Ihren Bedürfnissen anzupassen. Vor allem localnet werden Sie entsprechend Ihren Netzwerkgegebenheiten anpassen müssen:
# ACCESS CONTROLS
# -----------------------------------------------------------------------------
# TAG: acl
# Defining an Access List
#
# acl aclname acltype string1 ...
# acl aclname acltype "file" ...
#
# when using "file", the file should contain one item per line
#
# acltype is one of src dst srcdomain dstdomain url_pattern
# urlpath_pattern time port proto method browser user
#
# By default, regular expressions are CASE-SENSITIVE. To make
# them case-insensitive, use the -i option.
#
# acl aclname src ip-address/netmask ... (clients IP address)
# acl aclname src addr1-addr2/netmask ... (range of addresses)
# acl aclname dst ip-address/netmask ... (URL host's IP address)
# acl aclname myip ip-address/netmask ... (local socket IP address)
#
# acl aclname srcdomain foo.com ... # reverse lookup, client IP
# acl aclname dstdomain foo.com ... # Destination server from URL
# acl aclname srcdom_regex [-i] xxx ... # regex matching client name
# acl aclname dstdom_regex [-i] xxx ... # regex matching server
# # For dstdomain and dstdom_regex a reverse lookup is tried if a IP
# # based URL is used. The name "none" is used if the reverse lookup
# # fails.
#
# acl aclname time [day-abbrevs] [h1:m1-h2:m2]
# day-abbrevs:
# S - Sunday
# M - Monday
# T - Tuesday
# W - Wednesday
# H - Thursday
# F - Friday
# A - Saturday
# h1:m1 must be less than h2:m2
# acl aclname url_regex [-i] ^http:// ... # regex matching on whole URL
# acl aclname urlpath_regex [-i] \.gif$ ... # regex matching on URL path
# acl aclname port 80 70 21 ...
# acl aclname port 0-1024 ... # ranges allowed
# acl aclname proto HTTP FTP ...
# acl aclname method GET POST ...
# acl aclname browser [-i] regexp
# # pattern match on User-Agent header
# acl aclname ident username ...
# # string match on ident output.
# # use REQUIRED to accept any non-null ident.
# acl aclname src_as number ...
# acl aclname dst_as number ...
# # Except for access control, AS numbers can be used for
# # routing of requests to specific caches. Here's an
# # example for routing all requests for AS#1241 and only
# # those to mycache.mydomain.net:
# # acl asexample dst_as 1241
# # cache_peer_access mycache.mydomain.net allow asexample
# # cache_peer_access mycache_mydomain.net deny all
#
# acl aclname proxy_auth username ...
# # list of valid usernames
# # use REQUIRED to accept any valid username.
# #
# # NOTE: when a Proxy-Authentication header is sent but it is not
# # needed during ACL checking the username is NOT logged
# # in access.log.
# #
# # NOTE: proxy_auth requires a EXTERNAL authentication program
# # to check username/password combinations (see
# # authenticate_program).
# #
# # WARNING: proxy_auth can't be used in a transparent proxy. It
# # collides with any authentication done by origin servers. It may
# # seem like it works at first, but it doesn't.
#
# acl aclname snmp_community string ...
# # A community string to limit access to your SNMP Agent
# # Example:
# #
# # acl snmppublic snmp_community public
#
#
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1
acl localnet src 192.168.1.0/255.255.255.0
acl SSL_ports port 443 563
acl Safe_ports port 80 21 443 563 70 210 1025-65535
acl CONNECT method CONNECT
Jetzt wird es Zeit Die Zugriffsrechte einzuschränken. Zuerst erlauben wir den Zugriff von localhost und localnet (haben wir gerade die acl eingerichtet) und dann drehen wir alles andere wieder ab (die Originalzeile .. allow all .. bitte hinter Kommentar stellen - sonst steht Ihre Maschine ungeschützt in der weiten Welt):
# TAG: http_access
# Allowing or Denying access based on defined access lists
#
# Access to the HTTP port:
# http_access allow|deny [!]aclname ...
#
# Access to the ICP port:
# icp_access allow|deny [!]aclname ...
#
# NOTE on default values:
#
# If there are no "access" lines present, the default is to allow
# the request.
#
# If none of the "access" lines cause a match, the default is the
# opposite of the last line in the list. If the last line was
# deny, then the default is allow. Conversely, if the last line
# is allow, the default will be deny. For these reasons, it is a
# good idea to have an "deny all" or "allow all" entry at the end
# of your access lists to avoid potential confusion.
#
#Default configuration:
#http_access allow manager localhost
#http_access deny manager
#http_access deny !Safe_ports
#http_access deny CONNECT !SSL_ports
#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#
http_access allow localhost
http_access allow localnet
http_access deny all
# http_access allow all
# TAG: icp_access
# Reply to all ICP queries we receive
#
icp_access allow all
# TAG: miss_access
# Use to force your neighbors to use you as a sibling instead of
# a parent. For example:
#
# acl localclients src 172.16.0.0/16
# miss_access allow localclients
# miss_access deny !localclients
#
# This means that only your local clients are allowed to fetch
# MISSES and all other clients can only fetch HITS.
#
# By default, allow all clients who passed the http_access rules
# to fetch MISSES from us.
miss_access allow all
Die wohl wichtigste Funktion ist wie bei wwwoffle das faken der Browserkennung
# TAG: fake_user_agent
# If you filter the User-Agent header with 'anonymize_headers' it
# may cause some Web servers to refuse your request. Use this to
# fake one up. For example:
#
# fake_user_agent Nutscrape/1.0 (CP/M; 8-bit)
# (credit to Paul Southworth pauls@etext.org for this one!)
#
fake_user_agent Gozilla/4711.0815 (CP/M; 11-bit; 59 MByte)
Mehr habe ich für meinen squid nicht geändert. Der Rest blieb hinter Kommentarzeichen.
Als Newsserver habe ich leafnode gewählt. Hierzu sind folgende Schritte notwendig.
Zuerst sollten Sie das leafnode Konfigurationsfile wie folgt anpassen. Hier ist nur der Anfang des Files gezeigt. Der Rest des Files kann so bleiben. Sie sollten aber gelegentlich man leafnode verinnerlichen und die Parameter ihrem News-Verhalten entsprechend anpassen, sonst haben Sie entweder nie die News die sie gerade lesen wollen oder Ihre Harddisk quillt über, etc.
## This is the NNTP server leafnode fetches its news from.
## You need read and post access to it. Mandatory.
server = news.aon.at
## Unread discussion threads will be deleted after this many days if
## you don't define special expire times. Mandatory.
expire = 400
timeout = 60
##
## All the following parameters are optional
##
## I have free access to my news server. If you don't have, comment out
## the following two lines and change them accordingly.
# username =
#password =
Im obigen Listing-Ausschnitt der Datei /etc/leafnode/config
ist
wichtig, daß die Zeilen username und password hinter Kommentaren
bleiben.
Damit leafnode auch von anderen Servern fetcht habe ich folgende Zeilen eingefügt:
## This is a news server which does not understand the
## "LIST NEWSGROUP news.group" command. For this reason, we don't try to
## download newsgroups descriptions when getting new newsgroups. This is
## achieved by putting "nodesc = 1" somewhere behind the server/supplement
## line.
supplement = news.wu-wien.ac.at
supplement = news.univie.ac.at
supplement = newscache.infosys.tuwien.ac.at
supplement = euklid.nt.tuwien.ac.at
supplement = news2.informatik.uni-bremen.de
# nodesc = 1
## Here we have another news server which has a very slow connection. For
## that reason, we wait a full minute before we give up trying to connect.
## The default is 10 seconds.
supplement = news.inode.at
timeout = 60
Zu guter Letzt noch die leafnode/config für den User news lesbar machen. Am Besten gleich mit:
chmod a+r /etc/leafnode/config
In /etc/named.conf
wird folgender Block aktiviert:
options {
....
forwarders {
195.3.96.67
195.3.96.68
# = die beiden DNS Server des Providers hier eintragen
};
....
};
In rc.config muß die Variable START_NAMED=yes gesetzt werden.
Dieses Kapitel stammt von Leo Eibler <leo_eibler@gmx.at>.
DNSmasq ist eine sehr schlanke alternative zu bind mehr dazu findet man/frau auf http://www.thekelleys.org.uk/dnsmasq/doc.html
Vorteile gegenueber bind:
/etc/resolv.conf
und /etc/hosts
Im Linux-WiKi gibt es eine schöne Beschreibung zu dnsmasq http://linuxwiki.de/dnsmasq
Um leafnode dazu zu bewegen regelmäßig news zu fetchen,
sind folgende Zeilen in /etc/crontab
einzufügen:
34 2 * * * root test -x /usr/sbin/fetchnews && /usr/sbin/fetchnews -f
0-59/5 * * * * root test -x /usr/sbin/fetchnews && /usr/sbin/fetchnews -v -l
Das bewirkt daß alle 5 Minuten ein fetch -v -l durchgeführt wird der alle neuen Artikel fetcht aber nicht die supplementery server befragt und daß um 02:34 täglich ein fetch forced durchgeführt wird, der alle Inhaltsverzeichnisse neu lädt. Dieser Vorgang kann einige Stunden dauern und wurde daher auf 02:34 gelegt da um 02:30 ein fetchnews -f -l läuft der bis um 02:34 fertig sein sollte.
Wenn Sie zusätzlich noch die folgende Zeile einfügen, dann wird alle 60 Sekunden alles was in /var/spool/news/outgoing liegt gepostet.
0-59/5 * * * * root test -x /usr/sbin/fetch && /usr/sbin/fetch -P -l
In der Datei /etc/inetd.conf
habe ich vor der Zeile in der folgender
Inhalt steht, das Kommentarzeichen entfernt:
nntp stream tcp nowait news /usr/sbin/tcpd /usr/sbin/leafnode
Damit mein Rechner im richtige Uhrzeit hat, habe ich /etc/crontab
folgende Zeile eingefügt.
5 0-24/4 * * * root test -x /bin/datetimenow && /bin/datetimenow
Das Script /bin/datetimenow sieht bei mir folgendermaßen aus:
#! /bin/bash
# time adjustement from some timeservers and write time to hardwareclock
/usr/sbin/netdate elina.htlw16.ac.at \
ts1.univie.ac.at \
time.tu-graz.ac.at \
time.vbs.at \
ts2.univie.ac.at \
2>&1 > /dev/null \
&& \
/sbin/hwclock --systohc
Vorsicht beim Kopieren mit drag-n-drop: Nach dem Backslash dürfen keine Zeichen im Script stehen (auch keine Leerzeichen und Tabulatoren).
Bei allen diesen Scripts die ich in diesem HOWTO beschrieben habe, wird hier am Beispiel des Scripts datetimenow, noch etwas für die Systemsicherheit getan. Es sollte mit
chmod a-rwx /bin/datetimenow
für alle User alle Rechte abdrehen und dann mit
chmod u+rwx /bin/datetimenow
nur dem User die Rechte zurückgeben
Außerdem macht es Sinn wenn Sie noch kontrollieren ob diese Files auch dem User Root und der Gruppe root gehören.
chown root.root /bin/datentimeow
Versuchsweise hatte ich einmal einen httpd gestartet. Da es IMHO in
den AGB meines Providers nicht verboten ist, aber in der Leistungsbeschreibung
des Produkts auch nicht ausdrücklich erlaubt ist, habe ich
den http-Server wieder abgeschaltet. Wenn Sie dies auch einmal
ausprobieren wollen, dann ändern Sie folgende Zeilen in
/etc/http/httpd.conf
:
Zuerst alles was mit den Serverprozessen und Servereinstellungen zu tun hat. Doppelpunkte deuten an, daß dazwischen noch so manche andere, aber unveränderte Zeile vorkommt. Nach Möglichkeit steht hinter Kommentarzeichen oberhalb der geänderten Zeile, die Originalzeile wie Sie bei Ihnen zu Anfang noch sein könnte/sollte.
:
MinSpareServers 5
MaxSpareServers 10
:
StartServers 5
:
MaxRequestsPerChild 30
:
ServerAdmin heimo.schoen@gmx.at
:
#DocumentRoot "/usr/local/httpd/htdocs"
DocumentRoot "/home/heimo/public_html"
:
<Directory />
# Options -FollowSymLinks
Options FollowSymLinks
AllowOverride None
</Directory>
:
#<Directory "/usr/local/httpd/htdocs">
<Directory "/home/heimo/public_html">
:
# Options Indexes -FollowSymLinks +Includes
Options Indexes FollowSymLinks Includes ExecCGI
:
# AllowOverride None
AllowOverride All
:
#<Directory /home/*/public_html>
# AllowOverride FileInfo AuthConfig Limit
# Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
# <Limit GET POST OPTIONS PROPFIND>
# Order allow,deny
# Allow from all
# </Limit>
# <Limit PUT DELETE PATCH PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
# Order deny,allow
# Deny from all
# </Limit>
#</Directory>
<Directory /home/*/public_html>
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch Includes ExecCGI
<Limit GET POST OPTIONS PROPFIND>
Order allow,deny
Allow from all
</Limit>
<Limit PUT DELETE PATCH PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
Order deny,allow
Deny from all
</Limit>
</Directory>
:
#ServerSignature On
ServerSignature EMail
:
#ScriptAlias /cgi-bin/ "/usr/local/httpd/cgi-bin/"
ScriptAlias /cgi-bin/ "/home/heimo/public_html/cgi-bin/"
:
#<Directory "/usr/local/httpd/cgi-bin">
# AllowOverride None
# Options None
# Order allow,deny
# Allow from all
#</Directory>
<Directory "/home/heimo/public_html/cgi-bin/">
AllowOverride All
Options All
Order allow,deny
Allow from all
</Directory>
<Directory "/usr/local/httpd/cgi-bin/">
AllowOverride None
Options All
Order allow,deny
Allow from all
</Directory>
:
#<Location /cgi-bin>
#AllowOverride None
<Location /cgi-bin/>
AllowOverride All
:
#DocumentRoot "/usr/local/httpd/htdocs"
#ServerName boole.suse.de
#ServerAdmin root@boole.suse.de
DocumentRoot /home/heimo/public_html
ServerName pc104-1.ternitz
ServerAdmin heimo.schoen@gmx.at
:
Damit auch in .html Files eingebettete Skripts ausgeführt werden, sollte die letzte Zeile des nachstehenden Blocks eingefügt werden (die ersten beiden Zeilen gibt es schon im Original httpd.conf).
#
# To use server-parsed HTML files
#
AddType text/html .shtml
AddHandler server-parsed .shtml
AddHandler server-parsed .html
Dieses Kapitel soll zeigen welche Möglichkeiten die SMS Dienste der Handy-Provider
bieten. Einerseits habe ich im File /etc/ppp/ip-up
folgende Zeile
eingefügt an der Stelle wenn die PPP-Verbindung hochgefahren wird:
# Ein SMS könnte ich mir auch noch schicken
echo "ip-up on ppp0 $LOCALIP $USER" | mail -s "xxxx-" 436763163472@max.mail.at
Wobei xxxx- der PIN ist, den Sie als Antwort auf das erste SMS
erhalten, daß Sie an ein maxmobil-Handy senden. Das Minus am Ende
des PIN teilt dem max.mail.at mit, daß er keine Zustellungsquittung senden
soll.
Ähnliche Zeilen können Sie auch in anderen Scripts einfügen. Z. B. in
/etc/profile.local
kann ein SMS Ihnen mitteilen, wenn sich jemand auf
Ihrem Gateway einloggt.
Wie Sie ein Mail als SMS an Ihr Handy weiterleiten können wird in SMS-forward unter Linux erklärt.
Von Christian Eder <chris_eder@aon.at> stammt der folgende Beitrag mit einigen Scripts zum Senden von SMS an One-Handies:
OneSMS.java ist ein Javaprogramm, dass eine SMS an ein One Handy schickt. Aufruf: java OneSMS [Onenummer ohne Vorwahl] [Nachricht]. Ich hab dieses Programm geschrieben, da die im vorigen Kapitel erwähnten SMS Skripts nicht mehr funktionieren (One hat den WebSMS Dienst etwas geändert). Prinzipiell müsste das Programm auch für A1 und Max funktionieren, wenn man den Wert der Variablen gsmnet entsprechend ändert.
newip.sh ist ein Skript, daß überprüft ob sich die IP-Addresse geändert hat und in diesem Fall die neue IP-Addresse als SMS ans Handy schickt.
.forward und handymail.sh kann man verwenden, um beim Eintreffen einer neuen EMail Absender und das Subject als SMS aufs Handy zu bekommen.