/* This file is part of Mailfromd. -*- c -*- Copyright (C) 2006, 2007, 2008 Sergey Poznyakoff This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ MF_VAR(last_poll_host, STRING); MF_VAR(last_poll_send, STRING); MF_VAR(last_poll_recv, STRING); MF_VAR(last_poll_greeting, STRING); MF_VAR(last_poll_helo, STRING); MF_VAR(cache_used, NUMBER); void set_last_poll_helo(eval_environ_t env, const char *text) { MF_VAR_SET_STRING(last_poll_helo, text); } void set_last_poll_greeting(eval_environ_t env, const char *text) { MF_VAR_SET_STRING(last_poll_greeting, text); } void set_last_poll_result(eval_environ_t env, const char *host_addr, const char *send, const char *recv) { MF_VAR_SET_STRING(last_poll_host, host_addr); MF_VAR_SET_STRING(last_poll_send, send); MF_VAR_SET_STRING(last_poll_recv, recv); } void set_cache_used(eval_environ_t env, int value) { MF_VAR_REF(cache_used, value); } MF_DEFUN(stdpoll, NUMBER, STRING email, STRING ehlo, STRING mailfrom) { mf_status rc; const struct locus *locus = env_get_locus(env); trace("%s%s:%lu: STANDARD POLL FOR %s FROM %s AS %s", mailfromd_msgid(env_get_context(env)), locus->file, locus->line, email, ehlo, mailfrom); rc = method_standard(env, email, ehlo, mailfrom); MF_ASSERT(mf_resolved(rc), mf_status_to_exception(rc), _("Unhandled exception %s"), mf_exception_str(rc)); MF_RETURN(rc); } END MF_DEFUN(strictpoll, NUMBER, STRING host, STRING email, STRING ehlo, STRING mailfrom) { mf_status rc; const struct locus *locus = env_get_locus(env); trace("%s%s:%lu: STRICT POLL FOR %s HOST %s FROM %s AS %s", mailfromd_msgid(env_get_context(env)), locus->file, locus->line, email, host, ehlo, mailfrom); rc = method_strict(env, email, host, ehlo, mailfrom); MF_ASSERT(mf_resolved(rc), mf_status_to_exception(rc), _("Unhandled exception %s"), mf_exception_str(rc)); MF_RETURN(rc); } END MF_DEFUN(_pollhost, NUMBER, STRING host, STRING email, STRING ehlo, STRING mailfrom) { mf_status rc; const struct locus *locus = env_get_locus(env); trace("%s%s:%lu: POLLHOST %s FOR %s FROM %s AS %s", mailfromd_msgid(env_get_context(env)), locus->file, locus->line, email, host, ehlo, mailfrom); rc = check_on_host(env, email, host, ehlo, mailfrom); MF_ASSERT(mf_resolved(rc), mf_status_to_exception(rc), _("Unhandled exception %s"), mf_exception_str(rc)); MF_RETURN(rc); } END MF_DEFUN(_pollmx, NUMBER, STRING domain, STRING email, STRING ehlo, STRING mailfrom) { mf_status rc; const struct locus *locus = env_get_locus(env); trace("%s%s:%lu: POLLMX %s FOR %s FROM %s AS %s", mailfromd_msgid(env_get_context(env)), locus->file, locus->line, domain, email, ehlo, mailfrom); rc = check_mx_records(env, email, domain, ehlo, mailfrom, NULL); MF_ASSERT(mf_resolved(rc), mf_status_to_exception(rc), _("Unhandled exception %s"), mf_exception_str(rc)); MF_RETURN(rc); } END MF_INIT