Sendmail OpenID vagy SPF implementálás

 ( hajduarpad | 2011. november 8., kedd - 20:38 )

Sziasztok!

A feladat az lenne, hogy adott egy AIX 5.3 és egy Sendmail 8.13.4 SSL verzió és erre kellene egy secureid miltert ültetni.

Csinált már bárki hasonlót ? Ha jól vettem ki eddig akkor a milter nincs bináris formában AIX-re hanem nekem kellene lefordítani. Ehhez xlC-re is szükség lenne ha jól vettem ki a milter csomag forrását. (http://sourceforge.net/projects/sid-milter)

Illetve van-e más (akár fizetős) milter amit e célra fel lehetne használni ?

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Az első hiba (gcc-vel próbáltam) ez:

manual.c:99: error: 'AF_INET' undeclared (first use in this function)

a libar/manual.c -be betéve a hiányzó include-ot (sys/socket.h) fordul, míg végül dobja ezt:

../../include/sm/conf.h:2853: error: conflicting types for 'unsetenv'
/opt/freeware/lib/gcc/powerpc-ibm-aix6.1.0.0/4.4.5/include-fixed/stdlib.h:521: note: previous declaration of 'unsetenv' was here

Tegyük eme fájlban 2853-as sort kommentbe, hülyeség.
Szintén a libsm/config.c-ből is szedjük ki azt a részt, ahol implementálni próbálja az unsetenv-et.

Ezek után újabb hibát kapunk:

cc -g -I. -I../../libar -I../../libmarid -I../../sendmail -I../../include -D_AIX3 -DUSE_ARLIB -DXP_MT -c -o sid-filter.o sid-filter.c
sid-filter.c:62:30: error: libmilter/mfapi.h: No such file or directory

Ez már valami hiányzó dependency lehet, itt megállok.

PS: Ja és valami .u fájlokkal bénázik, amiket nem talál, ebbe nem mentem bele..

Nos, kicsit volt időm foglalkozni a kérdéssel:

Mivel nem sikerült a xlC 9-et működésre bírni, ezért telepítettem a gcc-t.

Létrehoztam a devtools/Site/site.config.m4 fájlt a következő tartalommal:

define(`confOPTIMIZE', `-O3 ')
define(`confCC', `/usr/bin/gcc')

Az első próbálkozás a fordításra sikertelen volt, de hát ez egy egyszerű probléma volt:

/bin/sh ./Build all
Configuration: pfx=, os=AIX, rel=5.3.12, rbase=5, rroot=5.3, arch=PPC, sfx=, variant=optimized
Making in /tmp/1/sid-milter-1.0.0/obj.AIX.5.3.12.PPC/libar
/usr/bin/gcc -O3 -I. -I../../include -D_AIX5=50300 -D_THREAD_SAFE -DXP_MT -c manual.c
manual.c: In function 'ar_res_parse':
manual.c:99:23: error: 'AF_INET' undeclared (first use in this function)
manual.c:99:23: note: each undeclared identifier is reported only once for each function it appears in
manual.c:185:9: error: incompatible types when assigning to type 'struct in_addr' from type 'in_addr_t'
manual.c:186:13: error: invalid operands to binary == (have 'struct in_addr' and 'unsigned int')
make: 1254-004 The error code from the last command is 1.

A megoldás pofonegyszerű volt:
Hozzá kellett adni a sys/socket.h-t a manual.c fájl include szekciójához. Ezt követően a libar sikeresen lefordult.

Azonban a libmarid továbbra sem fordul:

Making in /tmp/1/sid-milter-1.0.0/obj.AIX.5.3.12.PPC/libmarid
/usr/bin/gcc -O3 -I. -I../../include -D_AIX5=50300 -c sm-marid-address.c
/usr/bin/gcc -O3 -I. -I../../include -D_AIX5=50300 -c sm-marid-arena.c
/usr/bin/gcc -O3 -I. -I../../include -D_AIX5=50300 -c sm-marid.c
/usr/bin/gcc -O3 -I. -I../../include -D_AIX5=50300 -c sm-marid-dir-a.c
/usr/bin/gcc -O3 -I. -I../../include -D_AIX5=50300 -c sm-marid-dir-all.c
/usr/bin/gcc -O3 -I. -I../../include -D_AIX5=50300 -c sm-marid-dir-exists.c
make: 1254-002 Cannot find a rule to create target sm-marid-dir-.o from dependencies.

Jelenleg a fejtörés fázisban próbálok rájönni, hogy ezen hogy tudok túljutni.

Nyomozás:

1. betelt-e valamilyen lemez
2. mekkora a maximális fájlnév
3. esetleg tévedésből a gyári make-t használod a GNU-make helyett?
4. a libmarid alkönyvtárban a 'make -n' kimenetében látszik valami furcsaság?
5. ls mutat valami hibát?

cd .../libmarid
ls -l sm-marid-dir-exists.c \
sm-marid-dir-include.c \
../../libmarid/sm-marid-dir-exists.c \
../../libmarid/sm-marid-dir-include.c

Azóta megy már?

Sikerült lebeszélni mindenkit erről ... több napnyi sikertelen próbálkozás után feladtam.