Met behulp deze handleiding heb ik mijn laptop en mijn home server zo geconfigueerd dat ik mijn uitgaande mail vanaf mijn laptop altijd kan versturen via de smtp server van mijn isp.
Hier zit nog een complicatie bij: het ip adres waarop ik mijn home server kan bereiken is 192.168.0.254 als ik thuis ben en xxx.xxx.xxx.xxx als ik ergens anders ben. Ik laat daarom mijn inetd.conf verwijzen naar een hostname 'mailhost'. Met behulp van een script in /etc/network/if-up.d maak ik in /etc/hosts een verwijzing naar het juiste ip adres. Het komt er op neer dat als de naam van het interface dat op komt 'wlan0' is en de SSID van het wlan 'MijnSSID' is ik 192.168.0.1 in mijn host file zet, anders het externe ip van mijn router (die poort 22 forward naar mijn server, ik heb een statisch ip).
Het script is:
Dit werkt, maar is niet waterdicht. Stel dat ik mijn laptop thuis via ethernet aansluit (want grote file transfer naar mijn server), dan werkt het niet. Of als wlan0 plotseling wlan1 wordt.
De elegantste methode die ik heb kunnen bedenken is detectie van het mac adres van je router. Maar dat is vrij traag. De commando's
zijn allebei nogal traag (waarom?) Heeft iemand een beter idee om te detecteren of je laptop verbonden is met je thuisnetwerk?
Hier zit nog een complicatie bij: het ip adres waarop ik mijn home server kan bereiken is 192.168.0.254 als ik thuis ben en xxx.xxx.xxx.xxx als ik ergens anders ben. Ik laat daarom mijn inetd.conf verwijzen naar een hostname 'mailhost'. Met behulp van een script in /etc/network/if-up.d maak ik in /etc/hosts een verwijzing naar het juiste ip adres. Het komt er op neer dat als de naam van het interface dat op komt 'wlan0' is en de SSID van het wlan 'MijnSSID' is ik 192.168.0.1 in mijn host file zet, anders het externe ip van mijn router (die poort 22 forward naar mijn server, ik heb een statisch ip).
Het script is:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| #!/bin/bash
logger -i "running mailhost script"
# remove the existing mailhost lines
sed '/.*mailhost$/ d' /etc/hosts > /etc/newhosts
mv /etc/newhosts /etc/hosts
# quit if we are not configuring wlan0
if [ $IFACE = "wlan0" ]; then
logger -i "configuring wlan0, retrieving SSID"
# find out the identity of the local wlan
SSID=$(iwconfig wlan0 | grep -o "ESSID:\".*\"" | cut -f 2 -d "\"")
fi
if [ $IFACE = "wlan0" ] && [ $SSID = "MijnSSID" ]; then
logger -i "configuring mail host for home"
echo -e "192.168.0.1\tmailhost" >> /etc/hosts
else
logger -i "configuring mail host for out"
echo -e "my.external.ip.number\tmailhost" >> /etc/hosts
fi |
Dit werkt, maar is niet waterdicht. Stel dat ik mijn laptop thuis via ethernet aansluit (want grote file transfer naar mijn server), dan werkt het niet. Of als wlan0 plotseling wlan1 wordt.
De elegantste methode die ik heb kunnen bedenken is detectie van het mac adres van je router. Maar dat is vrij traag. De commando's
code:
1
2
| route | grep default | cut etc etc arp 192.168.0.1| cut etc etc |
zijn allebei nogal traag (waarom?) Heeft iemand een beter idee om te detecteren of je laptop verbonden is met je thuisnetwerk?