52 ip_env = env_get(
"TCP6REMOTEIP");
54 if (byte_equal(
ip_env,7,V4MAPPREFIX))
59 ip_env = env_get(
"TCPREMOTEIP");
61 else if (byte_equal(
ip_env,7,V4MAPPREFIX))
65 if (!stralloc_copys(&ip_reverse,
""))
nomem();
70 for (j = 15; j >= 0; j--) {
72 if (!stralloc_catb(&ip_reverse,&hexval,1))
nomem();
73 if (!stralloc_cats(&ip_reverse,
"."))
nomem();
75 hexval = tohex(
remoteip[j] >> 4 & 15);
76 if (!stralloc_catb(&ip_reverse,&hexval,1))
nomem();
77 if (!stralloc_cats(&ip_reverse,
"."))
nomem();
84 for (j = i; j > 0; --j)
85 if (
ip_env[j - 1] ==
'.')
break;
86 if (!stralloc_catb(&ip_reverse,
ip_env + j,i - j))
nomem();
87 if (!stralloc_cats(&ip_reverse,
"."))
nomem();
166 x = env_get(
"GREETDELAY");
174 if (!stralloc_copys(&info,
"greetdelay: "))
nomem();
176 buffer_puts(buffer_2,
"rblsmtpd: ");
177 buffer_puts(buffer_2,
ip_env);
178 buffer_puts(buffer_2,
" pid ");
179 buffer_put(buffer_2,strnum,fmt_ulong(strnum,getpid()));
180 buffer_puts(buffer_2,
": ");
181 buffer_put(buffer_2,info.s,info.len);
182 buffer_put(buffer_2,strnum,fmt_ulong(strnum,delay));
183 buffer_puts(buffer_2,
"\n");
184 buffer_flush(buffer_2);
186 if (!stralloc_cats(&info,
"\r\n"))
nomem();
196 if (!stralloc_copys(&message,
"[RBL info] "))
nomem();
198 if (text.len > 200) text.len = 200;
199 if (!stralloc_cat(&message,&text))
nomem();
201 for (i = 0; i < message.len; ++i)
202 if ((message.s[i] < 32) || (message.s[i] > 126))
205 buffer_puts(buffer_2,
"rblsmtpd: ");
206 buffer_puts(buffer_2,
ip_env);
207 buffer_puts(buffer_2,
" pid ");
208 buffer_put(buffer_2,strnum,fmt_ulong(strnum,getpid()));
209 buffer_puts(buffer_2,
": ");
210 buffer_put(buffer_2,message.s,message.len);
211 buffer_puts(buffer_2,
"\n");
212 buffer_flush(buffer_2);
214 if (!stralloc_copy(&info,&message))
nomem();
215 if (!stralloc_0(&info))
nomem();
216 if (!pathexec_env(
"RBLSMTPD",info.s))
nomem();
240 if (!stralloc_copys(&message,
"451 "))
nomem();
242 if (!stralloc_copys(&message,
"553 "))
nomem();
244 if (text.len > 200) text.len = 200;
245 if (!stralloc_cat(&message,&text))
nomem();
246 for (i = 0; i < message.len; ++i)
247 if ((message.s[i] < 32) || (message.s[i] > 126))
250 buffer_puts(buffer_2,
"rblsmtpd: ");
251 buffer_puts(buffer_2,
ip_env);
252 buffer_puts(buffer_2,
" pid ");
253 buffer_put(buffer_2,strnum,fmt_ulong(strnum,getpid()));
254 buffer_puts(buffer_2,
": ");
255 buffer_put(buffer_2,message.s,message.len);
256 buffer_puts(buffer_2,
"\n");
257 buffer_flush(buffer_2);
259 if (!stralloc_cats(&message,
"\r\n"))
nomem();
264 sig_catch(sig_alarm,
drop);