138 #define STR(x) vstring_str(x)
139 #define LEN(x) VSTRING_LEN(x)
144 const char *dnsbl_domain,
147 const char *myname =
"dnsblog_query";
150 struct addrinfo *res;
151 unsigned char *ipv6_addr;
158 msg_info(
"%s: addr %s dnsbl_domain %s",
159 myname, addr, dnsbl_domain);
172 || res->ai_family != PF_INET6)
173 msg_fatal(
"%s: unable to convert address %s", myname, addr);
174 ipv6_addr = (
unsigned char *) &SOCK_ADDR_IN6_ADDR(res->ai_addr);
175 for (i =
sizeof(SOCK_ADDR_IN6_ADDR(res->ai_addr)) - 1; i >= 0; i--)
177 ipv6_addr[i] & 0xf, ipv6_addr[i] >> 4);
188 for (i = octets->
argc - 1; i >= 0; i--) {
209 if (dns_status ==
DNS_OK) {
210 for (rr = addr_list; rr != 0; rr = rr->
next) {
212 msg_warn(
"%s: skipping reply record type %s for query %s: %m",
215 msg_info(
"addr %s listed by domain %s as %s",
216 addr, dnsbl_domain, hostaddr.
buf);
221 if (*result_ttl < 0 || *result_ttl > rr->
ttl)
222 *result_ttl = rr->
ttl;
228 msg_info(
"%s: addr %s not listed by domain %s",
229 myname, addr, dnsbl_domain);
231 for (rr = addr_list; rr != 0; rr = rr->
next) {
232 if (rr->
type == T_SOA && (*result_ttl < 0 || *result_ttl > rr->
ttl))
233 *result_ttl = rr->
ttl;
237 msg_warn(
"%s: lookup error for DNS query %s: %s",
238 myname,
STR(query),
STR(why));
246 static void dnsblog_service(
VSTREAM *client_stream,
char *unused_service,
256 msg_fatal(
"unexpected command-line argument: %s", argv[0]);
269 (void) dnsblog_query(result, &result_ttl,
STR(rbl_domain),
STR(addr));
285 static void post_jail_init(
char *unused_name,
char **unused_argv)
299 int main(
int argc,
char **argv)
#define DNS_REQ_FLAG_NCACHE_TTL
#define MAIL_ATTR_RBL_ADDR
const char * dns_strtype(unsigned)
int valid_ipv6_hostaddr(const char *addr, int gripe)
#define CA_MAIL_SERVER_UNLIMITED
void freeaddrinfo(struct addrinfo *ai)
MAIL_VERSION_STAMP_DECLARE
int main(int argc, char **argv)
ARGV * argv_free(ARGV *argvp)
#define RECV_ATTR_INT(name, val)
#define MAIL_ATTR_ACT_CLIENT_ADDR
int hostaddr_to_sockaddr(const char *hostaddr, const char *service, int socktype, struct addrinfo **res)
const char * dns_rr_to_pa(DNS_RR *, MAI_HOSTADDR_STR *)
#define VSTRING_TERMINATE(vp)
#define CA_MAIL_SERVER_POST_INIT(v)
int dns_lookup_x(const char *, unsigned, unsigned, DNS_RR **, VSTRING *, VSTRING *, int *, unsigned)
char buf[MAI_HOSTADDR_STRSIZE]
VSTRING * vstring_sprintf_append(VSTRING *vp, const char *format,...)
#define VSTRING_RESET(vp)
void msg_warn(const char *fmt,...)
VSTRING * vstring_alloc(ssize_t len)
#define MAIL_VERSION_STAMP_ALLOCATE
#define CA_MAIL_SERVER_TIME_TABLE(v)
#define SEND_ATTR_INT(name, val)
NORETURN msg_fatal(const char *fmt,...)
int vstream_fflush(VSTREAM *stream)
ARGV * argv_split(const char *, const char *)
#define MAIL_ATTR_RBL_DOMAIN
NORETURN single_server_main(int, char **, SINGLE_SERVER_FN,...)
#define VAR_DNSBLOG_DELAY
void dns_rr_free(DNS_RR *)
#define SEND_ATTR_STR(name, val)
VSTRING * vstring_strcat(VSTRING *vp, const char *src)
#define DEF_DNSBLOG_DELAY
#define RECV_ATTR_STR(name, val)
void msg_info(const char *fmt,...)