Note that if you are using NetBSD 1.6T or better, the
system sendmail already supports the Milter library. And pkgsrc
supports sendmail installation (for 8.12.x, 8.12.9 at this
moment) linked with Milter library. See mail/libmilter and
mail/sendmail (use make USE_MILTER=yes
command to
build the last one).
(Thanks to Mishka for pointing this out)
This is a posting from Mishka to comp.unix.bsd.netbsd.misc on getting sendmail to work with libmilter using the devel/pth package:
From: Mishka <mishka@batraq.anything3d.com> Newsgroups: comp.unix.bsd.netbsd.misc Subject: NetBSD + Milter = friendship :) Date: Fri, 30 Aug 2002 18:12:49 +0300 Organization: PACOnet ISP Message-ID: <3D6F8B71.4050807@batraq.anything3d.com> X-Complaints-To: abuse@paco.net NNTP-Posting-Date: Fri, 30 Aug 2002 15:13:42 +0000 (UTC) User-Agent: Mozilla/5.0 (X11; U; NetBSD i386; en-US; rv:1.0.0) Gecko/20020816 X-Accept-Language: en-us, ru X-NNTP-Posting-Host: batraq.anything3d.com Hello! I found that built-in sendmail (8.11.6 for NetBSD 1.6E) compiled without Milter support. Next, in pkgsrc collection sendmail have the same version, and have not Milter support also. It seems to be due to absence of POSIX threads in system. Anobody knows rightest way to enable Milter functionality in Sendmail? It would be great if we can solve this problem without install other version of sendmail, but use built-in one. Having installed pth-1.4.1 before, I tried the following: 1) Add the following files and dir to /usr/src/gnu/usr.sbin/sendmail: libmilter/ libmilter/Makefile libmilter/Makefile.milter With following contents: ---- libmilter/Makefile.milter BEGIN ---- # $NetBSD$ .if _FFR_MILTER PTH_CFLAGS!= pth-config --cflags PTH_LDFLAGS!= pth-config --ldflags PTH_LIBS!= pth-config --libs CPPFLAGS+= -D_FFR_MILTER CPPFLAGS+= ${PTH_CFLAGS} LDADD+= ${PTH_LDFLAGS} ${PTH_LIBS} .endif ---- libmilter/Makefile.milter END ---- ---- libmilter/Makefile BEGIN (derived from libsmutil/Makefile) ---- # $NetBSD: Makefile,v 1.4 2001/12/12 12:24:21 lukem Exp $ NOSHARE= # defined NOPIC= # defined NOPROFILE= # defined .include <bsd.own.mk> .include "Makefile.milter" DIST= ${.CURDIR}/../../../dist .PATH: ${DIST}/sendmail/libmilter LIB= milter CPPFLAGS+= -DNOT_SENDMAIL SRCS= comm.c engine.c handler.c listener.c SRCS+= main.c signal.c sm_gethost.c smfi.c libinstall:: .include <bsd.lib.mk> ---- libmilter/Makefile BEGIN ---- And have added the following line to Makefile: .include "libmilter/Makefile.milter" 2) Next, having installed libmilter/Makefile.milter I do: # pwd /usr/src/gnu/usr.sbin/sendmail # make clean ... # make -f Makefile -D_FFR_MILTER ... . at this stage i seen that libsmutil and other is compiled . with _FFR_MILTER flags and linked with -lpth ... # make install ... # ldd /usr/libexec/sendmail/sendmail /usr/libexec/sendmail/sendmail: -lwrap.0 => /usr/lib/libwrap.so.0 -lutil.6 => /usr/lib/libutil.so.6 -lssl.2 => /usr/lib/libssl.so.2 -lcrypto.1 => /usr/lib/libcrypto.so.1 -lpth.14 => /usr/pkg/lib/libpth.so.14 <--- look here -lc.12 => /usr/lib/libc.so.12 # cd libmilter && make -D_FFR_MILTER ... # cp libmilter.a /usr/lib # ns -s /usr/lib/libmilter.asmfi_getpriv in smfi.o smfi_addrcpt in smfi.o smfi_addheader in smfi.o smfi_getsymval in smfi.o ... and so on ... 3) After two ones below, I have sucessfully compiled sample mail filter which uses libmilter library. 4) After all, I have added following lines to /etc/mail/sendmail.rc: O InputMailFilters=drweb-filter Xdrweb-filter, S=inet:3001@localhost, T=S:10m;R:10m;E:1h And errors for this moment wasn't detected :) But i have ask you once more: is there exists more easiest way to do this, and anybody know what we will do if some package uses Milter functionality? (maybe syspkg ;) Thanks in advance. -- Mishka.