--- ./acp.c.org 2004-02-23 23:58:05.000000000 +0900 +++ ./acp.c 2006-11-02 18:07:39.000000000 +0900 @@ -24,7 +24,9 @@ #include #include +#if !defined(__APPLE__) #include +#endif #include #include @@ -193,10 +195,18 @@ static int setvar(smtp_t *x, char *var, char *value) { +#if defined(sun) + char env[400]; + + snprintf (env, sizeof(env) - 2, "%s%s=%s", x->config->varname, var, + value != NULL? value: ""); + putenv(strdup(env)); +#else char varname[200]; snprintf (varname, sizeof(varname) - 2, "%s%s", x->config->varname, var); setenv(varname, value != NULL? value: "", 1); +#endif return (0); } --- ./makefile.org 2004-04-05 05:09:09.000000000 +0900 +++ ./makefile 2006-11-02 18:07:39.000000000 +0900 @@ -1,4 +1,4 @@ - +PREFIX = /usr/local CC = gcc CFLAGS = -ggdb -Wall -DVERSION='"$(VERSION)"' @@ -18,13 +18,12 @@ install: all strip $(TARGETS) - cp smtp.proxy /usr/local/sbin/smtp.proxy - cp $(TARGETS) /usr/local/sbin - cp *.1 /usr/local/man/man1 + cp $(TARGETS) $(PREFIX)/sbin + cp *.1 $(PREFIX)/man/man1 smtp.proxy: $(SMTPPROXY) - $(CC) -o $@ $(SMTPPROXY) + $(CC) -o $@ $+ $(LDLIBS) --- ./smtp.c.org 2004-02-23 23:56:26.000000000 +0900 +++ ./smtp.c 2006-11-02 18:07:39.000000000 +0900 @@ -428,7 +428,7 @@ int spooldata(smtp_t *x, FILE *fp) { int lineno, isheader; - char *p, line[2048]; + char *p, line[2048], line_buffer[2050]; lineno = 0; isheader = 1; @@ -441,6 +441,7 @@ */ strcpy(line, "."); + p = line; goto end; } } @@ -523,9 +524,7 @@ p = line; if (fp != NULL) { if (*line == '.') { - char buffer[2050]; - - snprintf (p = buffer, sizeof(buffer), ".%s", line); + snprintf (p = line_buffer, sizeof(line_buffer), ".%s", line); } } @@ -540,7 +539,7 @@ * Did we reach the end of the mail? */ - if (line[0] == '.' && line[1] == 0) + if (p[0] == '.' && p[1] == 0) break; --- ./smtp.proxy.acp.dracd.c.org 2006-11-02 18:07:39.000000000 +0900 +++ ./smtp.proxy.acp.dracd.c 2006-11-02 18:07:39.000000000 +0900 @@ -0,0 +1,34 @@ +#include /* stderr, etc */ +#include /* getenv, etc */ +#include /* strlen, etc */ +#include /* O_RDONLY, etc */ +#include /* dbopen, etc */ + +#ifndef DRAC_DB +#define DRAC_DB "dracd.db" +#endif + +int main(int argc, char *argv[]) +{ + char *SMTP_CLIENT; + DB *dbp; + DBT dbk, dbd; + + if (!(SMTP_CLIENT=getenv("SMTP_CLIENT"))) { + fprintf(stderr, "554 error\n"); + return 2; + } + if (!(dbp=dbopen(DRAC_DB, O_RDONLY, 0644, DB_HASH, NULL))) { + fprintf(stderr, "554 error\n"); + return 2; + } + dbk.data = SMTP_CLIENT; + dbk.size = strlen(SMTP_CLIENT); + if (dbp->get(dbp, &dbk, &dbd, 0) != RET_SUCCESS) { + fprintf(stderr, "554 error\n"); + dbp->close(dbp); + return 2; + } + dbp->close(dbp); + return 0; +} --- ./smtp.proxy.acp.org 2006-11-02 18:07:39.000000000 +0900 +++ ./smtp.proxy.acp 2006-11-02 18:07:39.000000000 +0900 @@ -0,0 +1,12 @@ +#!/bin/sh +case "$SMTP_CLIENT" in +192.168.[0125].*|\ +210.154.62.6[4-9]|210.154.62.7[0-1]|\ +219.166.94.16[8-9]|219.166.94.17[0-5]) + exit 0 + ;; +*) + /opt/local/sbin/smtp.proxy.acp.dracd + exit $? + ;; +esac --- ./smtp.proxy.ccp.clamav.org 2006-11-02 18:07:39.000000000 +0900 +++ ./smtp.proxy.ccp.clamav 2006-11-02 18:07:39.000000000 +0900 @@ -0,0 +1,7 @@ +#!/bin/sh +/opt/local/clamav/bin/clamdscan --quiet $SMTP_MAIL +if test "$?" = "1"; then + echo '554 the message may contain virus' 2>&1 + exit 2 +fi +exit 0