diff -ur orig/meta1-1.0.PreAlpha28.0/include/sm/pmfapi.h meta1-1.0.PreAlpha28.0/include/sm/pmfapi.h
--- orig/meta1-1.0.PreAlpha28.0/include/sm/pmfapi.h	2008-10-30 06:52:59.000000000 +0200
+++ meta1-1.0.PreAlpha28.0/include/sm/pmfapi.h	2009-06-04 18:11:05.000000000 +0300
@@ -313,7 +313,11 @@
 
 	pmfi_msg_rplc_stat_F	 pmfi_msg_rplc_stat;
 
-	char		 pmfi_unused[64];
+	uint32_t         pmfi_thrmax_s;
+	uint32_t         pmfi_thrmax_h;
+	uint32_t         pmfi_fdmax;
+	
+	char		 pmfi_unused[52];
 };
 
 LIBMILTER_API sm_ret_T sm_pmfi_init(pmg_ctx_P *_pmg_ctx);
diff -ur orig/meta1-1.0.PreAlpha28.0/libpmilter/pmilter.h meta1-1.0.PreAlpha28.0/libpmilter/pmilter.h
--- orig/meta1-1.0.PreAlpha28.0/libpmilter/pmilter.h	2008-01-30 03:05:30.000000000 +0200
+++ meta1-1.0.PreAlpha28.0/libpmilter/pmilter.h	2009-06-04 18:20:51.000000000 +0300
@@ -233,7 +233,7 @@
 #define PMSS_ST_STOPPED	0x81	/* stopped: almost terminated */
 
 sm_ret_T sm_pmilt_init0(pmg_ctx_P *_ppmg_ctx);
-sm_ret_T sm_pmilt_init1(pmg_ctx_P _pmg_ctx);
+sm_ret_T sm_pmilt_init1(pmg_ctx_P _pmg_ctx, uint thrmax_s, uint thrmax_h, uint fdmax);
 sm_ret_T sm_pmilt_start(pmg_ctx_P _pmg_ctx);
 sm_ret_T sm_pmilt_stop(pmg_ctx_P _pmg_ctx);
 
diff -ur orig/meta1-1.0.PreAlpha28.0/libpmilter/pmilter_api.c meta1-1.0.PreAlpha28.0/libpmilter/pmilter_api.c
--- orig/meta1-1.0.PreAlpha28.0/libpmilter/pmilter_api.c	2006-10-05 07:27:37.000000000 +0300
+++ meta1-1.0.PreAlpha28.0/libpmilter/pmilter_api.c	2009-06-04 18:20:16.000000000 +0300
@@ -106,6 +106,8 @@
 	return ret;
 }
 
+#define SM_PMFI_DEF_VAL(val, dfl) ((val) ? (val) : dfl)
+
 /*
 **  SM_PMFI_START -- start PMILTER
 **
@@ -142,10 +144,14 @@
 	}
 
 	/* initialize system */
-	ret = sm_pmilt_init1(pmg_ctx);
+	ret = sm_pmilt_init1(pmg_ctx,
+		     SM_PMFI_DEF_VAL(pmg_ctx->pmg_pmilter->pmfi_thrmax_s, 2),
+		     SM_PMFI_DEF_VAL(pmg_ctx->pmg_pmilter->pmfi_thrmax_h, 6),
+		     SM_PMFI_DEF_VAL(pmg_ctx->pmg_pmilter->pmfi_fdmax, 10));
+
 	if (sm_is_err(ret))
 	{
-		sm_io_fprintf(smioerr, "sev=ERROR, sm_pmilt_init=%x\n", ret);
+		sm_io_fprintf(smioerr, "sev=ERROR, sm_pmilt_init=%m\n", ret);
 		goto error;
 	}
 
@@ -153,7 +159,7 @@
 	ret = sm_pmilt_start(pmg_ctx);
 	if (sm_is_err(ret))
 	{
-		sm_io_fprintf(smioerr, "sev=ERROR, sm_pmilt_start=%x\n", ret);
+		sm_io_fprintf(smioerr, "sev=ERROR, sm_pmilt_start=%m\n", ret);
 		goto error;
 	}
 	pmg_ctx->pmg_state = PMILT_ST_RUN;
diff -ur orig/meta1-1.0.PreAlpha28.0/libpmilter/pmilter_init.c meta1-1.0.PreAlpha28.0/libpmilter/pmilter_init.c
--- orig/meta1-1.0.PreAlpha28.0/libpmilter/pmilter_init.c	2006-10-05 07:27:38.000000000 +0300
+++ meta1-1.0.PreAlpha28.0/libpmilter/pmilter_init.c	2009-06-04 18:20:55.000000000 +0300
@@ -98,12 +98,12 @@
 */
 
 sm_ret_T
-sm_pmilt_init1(pmg_ctx_P pmg_ctx)
+sm_pmilt_init1(pmg_ctx_P pmg_ctx, uint thrmax_s, uint thrmax_h, uint fdmax)
 {
 	int i;
 	uint u;
 	sm_ret_T ret;
-
+	
 	SM_IS_PMG_CTX(pmg_ctx);
 
 	/* initialize pthreads */
@@ -125,7 +125,8 @@
 	}
 
 	/* initialize event threads system; CONF */
-	ret = evthr_init(&pmg_ctx->pmg_ev_ctx, 2, 6, 10);
+	ret = evthr_init(&pmg_ctx->pmg_ev_ctx, thrmax_s, thrmax_h, fdmax);
+
 	if (sm_is_err(ret))
 	{
 		sm_io_fprintf(smioerr,
