[Megoldva ]Postfix mynetworks dynamic ip-vel.

Fórumok

Sziasztok.

Olyan problémám lenne, hogy be kell állítanom, hogy egy dinamikusan változó ip címről lehessen authentikáció nélkül levelet küldeni. Viszont csak arról az ip címről, tehát nem engedélyeztethetek tartományt.

Találtam egy scriptet, ami elvileg működik, de nekem nem akar.

#! /bin/bash
IP=`< dyndns.org > | sed 's/^[ ]*//g' | cut -d ' ' -f 4`
echo mynetworks = /32, 127.0.0.0/8, $IP/32, > /etc/postfix/mynetworks
/etc/init.d/postfix reload

Esetleg valaki megmondaná, hogy mit és hogyan írjak át, hogy működjön rendesen?

Előre is köszönöm.

Üdv

Hozzászólások

'man 5 postconf', keress ra a mynetworks-re, ott lesz, mi hianyzik a main.cf-bol.

Ilyen sorod van a main.cf-ben?
mynetworks = $config_directory/mynetworks

Én így csinálnám a scriptet:

#! /bin/bash
IP=`host valami.dyndns.org | awk {'print $4'}`
echo "$IP/32, 127.0.0.0/8" > /etc/postfix/mynetworks
/etc/init.d/postfix reload

vmi ilyesmi kellene


#!/bin/bash
r=$(host -R 3 "myhost.dyndns.org")
if [ $? -eq 0 ]; then
  IP=$(echo $r | cut -d ' ' -f 4)
  echo "mynetworks = 127.0.0.0/8, $IP/32" >/etc/postfix/mynetworks
  /etc/init.d/postfix reload
fi

Nekem ez picit abszurdnak tűnik, nem is értem, miért van ilyenre szükség (a kliensen el lehet menteni a jelszót), de ha nincs más megoldás (pl. mert a kliens nem támogatja az authentikációt), természetesen ez is járható út.

A fenti szkriptben az IP-lekérdező rész jelen formában biztosan nem működik, próbáld meg így:


#!/bin/bash
IP=`host valami.dyndns.org | sed -n 's/.*address\ \([0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\)/\1/ip'`
echo "x.x.x.x/x, 127.0.0.0/8, $IP/32" > /etc/postfix/mynetworks
/etc/init.d/postfix reload

A "valami.dyndns.org" helyére írd be a kliens DNS-nevét, az x.x.x.x/x részt pedig cseréld le a belső hálózat IP-tartományára (pl. 192.168.1.0/24).

Ha ez megvan, már csak össze kell lőni valahogy a dyndns klienssel (feltéve, ha van hozzáférésed a klienshez). Erre konkrét javaslatot nem tudok mondani, mert nem tudom, milyen kliens fut a túloldalon. Elméletben úgy néz ki a dolog, hogy IP-változásnál le kell futtatni egy szkriptet, ami valami módon "jelez" a szervernek, hogy frissítse a postfix konfigot. Ennek számtalan módja lehet, de ha van ilyen lehetőség, akkor egy hook-on keresztül volna érdemes megoldani.

Ha nem férsz hozzá a klienshez, akkor túl sok lehetőséged nincs, legfeljebb az, hogy beütemezed a szkriptet a szerveren, viszont így szükség lesz egy kis időre, míg a szerver frissíti a konfigot. Ha ez nem probléma, akkor add hozzá az alábbi sort az /etc/crontab-hoz:

*/5 * * * * root /szkript/eleresi/utvonala >/dev/null 2>&1

Arra is oda kell figyelni, hogy a Postfix egy külső fájlból, nevezetesen a /etc/postfix/mynetworks-ből olvassa be a mynetworks beállítást. Nyisd meg az /etc/postfix/main.cf fájlt és szerkeszd át benne a mynetworks opciót az alábbiak szerint:

mynetworks = /etc/postfix/mynetworks

szerk.: úgy látszik, lassú voltam. :(

Jaja, van már megoldás, de azért köszi neked is.

Az a baj, hogy ez egy develop fénymásoló és nem tud authenticálni, szóval marad ez a megoldás. Annyira azért nem vagyok linux kezdő, de köszi a részletes leírást, talán másnak jól jön majd.

Köszönöm szépen mindenkinek még egyszer a segítséget és Kellemes Húsvéti Ünnepeket kívánok!