#include #include #include #include "sepofra.h" #include "qq_exit_codes.h" // a bit of a kludge extern std::string progid; class skrewt{ public: std::string received_from; // envelope HELO among other things std::string proximta_HELO; std::string proximta_rDNS; std::string proximta_IP; std::string proximta_AuthUser; std::string return_path; // envelope MAIL FROM std::string boundary; std::string to; std::string from; std::string subject; std::string date; std::string message_id; std::string content_type; std::string delivered_to; int msgsize; std::vector bigbuf; int saw_blank_line; int recno; int maxsize; int error_exit; int mid_required; // constructor skrewt() : boundary("x-xx-x"), msgsize(0), saw_blank_line(0), recno(0), maxsize(1000*1000), error_exit(0), mid_required(0) {} int headers(std::istream& xin); int dump_headers(std::ostream& xout); int interstage(); int body(std::istream& xin, std::ostream& xout); int krunch_rfrom(); }; void parse_content(const std::string type_spec_line, std::string &maintype, std::string &boundary); void exeunt(const int sts); void maybe_exeunt(const int sts, const int really);