A megoldás működik (a marsmailt-t kicsit át kellett hackni hozzá, hogy űgy menjen, ahogy én azt elképzeltem), de szerintem nem az igazi, ugyanis ha a felhasználó az inbox-ból nem takaritja el a leveleit, akkor a marsmail következő futtatásánal a már olvasott, de az inboxban levő levelek újra konvertálásra kerülnek (legalábbis úgy rémlik, ezért nem nyerte el tetszésemet).
Az általam alkalmazott megoldás lényege az, hogy a felhasználó linuxos homekönyvtárában kialakitunk egy pmail/in és egy pmail/out könyvtarat. A linuxos home lesz dos-ban az I: könyvtár, és a mars pedig a pmail/in -ből szedi a bejövő, a pmail/out-ba rakja a kimenő leveleit, ahonnan egy cron által futtatott script szedi ki a fileokat és postázza el sendmaillel.
Először megcsináltam a ~/pmail/in és a ~/pmail/out könyvtárakat, majd a .procmailrc-t es a .forward-ot megtöltöttem megfelelő tartalommal:
mailtrans:~$ cat .forward "|/usr/bin/procmail" mailtrans:~$ cat .procmailrc PATH=/bin:/usr/bin:/usr/local/bin MAILDIR=$HOME/pmail/in
:0: * .* `/usr/local/bin/sing` mailtrans:~$(Netscape alatt irom ezt, számomra nem annyira feltűnő a különbség, az `/usr/local/bin/sing` körül az a két kis aposztróf a visszafelé-aposztróf [``backtick''])
Az /usr/local/bin/-ben levő sing (sort incoming :) nevű script végzi el a bejövő
levelek PMail által használt névkonvencióknak (8 szám + .cnm kiterjesztés)
megfelelő nevű fileba lerakását:
mailtrans:/usr/local/bin$ cat sing #!/bin/bash BASE=$(date +%s|sed 's/.*\(........\)$/\1/') echo $BASE.cnm mailtrans:/usr/local/bin$Ezzel a bejövő levelek feldolgozása kész.
mailtrans:/usr/local/bin$ cat ohspool #!/bin/bash # # # This script runs through all the user dirs to collect mail that needs to # be sent. # Pegasus mail for dos will use a gateway that places outgoing mail in # /home/username/pmail/out. All these messages will be picked up by this # script and mailed out. # Please create a file /etc/ohmaillist that contains valid users that # may send mail from dos pmail logged into mars. # (I added it to the adduser script so all users can have new mail) # Format of the ohmaillist file is just a single username per line
# Replace with the base dir of your home directories i.e. /home
homedirs="/home/users"
# Replace with your domain name dm="mailtrans.sote.hu"
cd /home/users for l in `cat /etc/ohmaillist` do FROM=$l chmod 660 /var/spool/mail/$l for x in `ls $l/pmail/out` do if [ "$FROM" == "nwadm" ]; then FROM=supervisor fi cat "$l/pmail/out/$x" | sed '1,4d' | \ /usr/sbin/sendmail -f "<$FROM@$dm>" -t echo "`date` ohspool: mail sent from=<$l>, to=<`cat $l/pmail/out/$x | \ sed 's/.$//;5!d;s/.* \([^ ]*@[^ ].*\)/\1/'`>" >> /var/log/ohspool.log rm "$l/pmail/out/$x" done sleep 1 done
# ohmail - ends here mailtans:/usr/local/bin$Az /etc/ohmaillist nevű fileban vannak felsorolva azok a felhasználók, akik küldhetnek pmaillel levelet, minden sorban egy felhasználónév, semmi trükközés.
Ez a script elvégzi a válogatást, és /var/log/ohspool.log-ba logolja áldásos tevékenységet.
A script a root crontabjából fut, esetünkben 5 percenként, amihez a következő cronbejegyzés szükséges:
0/5 * * * * /usr/local/bin/ohspool
FIGYELEM: az ohspool script jelenlegi állapotában nem lockolja a fileokat, igy a még lehetséges legkisebb időközt, amikor a futás megfelelő, empirikus úton (probálgatással :) lehet jól belőni. Ha túl gyakran fut, előfordulhat, hogy úgymond 'utoléri magát', és kétszer küld el egy levelet; ha túl ritkán, akkor háborognak a felhasználók, hogy lassú a levélváltás.
Ezekután az adduser scriptbe célszerű beletenni egy sort acélból, hogy az újonnan hozzáadott usert vegye fel a pmail-használók közé, valamint az /etc/skel-be beirni egy forward és egy procmailrc-t, valamint a pmai, pmail/in és pmail/out könyvtárakat.
A PMail-t be kell állitani úgy, hogy a frissen kreált gateway-ünket használja, es ne azt, amit ő szeretne. (3.11-es PMail-ről van szó, a többit nem ismerem)
Supervisor-ként a PCONFIG programmal lehet beállitani a gatewayt:
pconfig -> Manage User Defined Gateways -> Define New Gateway
A beállitások:
::: I Gateway name : [OH ] I.:::: ::: I *New mail path : i:\pmail\in I|:::: ::: I Is ^ a program to run? : N I|:::: ::: I *New mail search mask : *.cnm I|:::: ::: I *Outgoing mail path : i:\pmail\out I|:::: ::: I *Run for outgoing mail : I|:::: ::: I *Filename format : ~d~d.CNM I|:::: ::: I Run to validate address : I|:::: ::: I *Reply address format : ~n@geped.inet.neve I|:::: ::: I Accepts SMTP addresses? : Y I|:::: ::: I Simple message headers? : Simple headers I|:::: ::: I UUEncode attachments? : N I|:::: ::: I Burst messages? : N I|:::: ::: I Strip gateway name? : Y I|:::: ::: I Force all mail through? : Y I|::::
És még valami: úgy látom a pmail.exe valami miatt nem szereti, ha nem abból a könyvtárból van inditva, ahol ő leledz, invalid resource-ra hivatkozik. Ezen az sem segitett, ha path-ba raktam, úgyhogy célszerű egy mail.bat-ot felkérni arra, hogy váltson át a megfelelő meghajtó megfelelő könyvtárába, és ott inditsa el a pmail.exe-t.
Pásztor György" <pasztor@gyakg.u-szeged.hu> megjegyzése:
A DOS-ban kell lennie egy környezeti változónak aminek a neve PMAILRSC ezt kell beállítani valamire: ez lehet hu, eng, nds; attól függúen hogy milyen nyelvű pmailt akarsz hasznalni, ugyanis a pmail több nyelvű feliratokkal is használható, minden a pmailrsc értékétúl függ. Ilyen rsc fileokat, úgy emlékszem a Ságvári Gimnázium ftp-szerveréről (ftp://ftp.gyakg.u-szeged.hu) tölthetsz le. (Es egyéb novelles kiegészítőket is...) De ettől függetlenul ezeknek lehet, hogy path-ban kell lenniük... Ja és még annyit, hogy ha pmailrsc-nek nds van beállítva, akkor ahhoz pmailnds.exe nevű file kell, es az nds (novel4.x) hálózatokhoz való...
A MARS NDS-t nm tud, így ez a része nem érint bennünket.
ice@rulez.org
|