Provided by: qpsmtpd_0.94-4_all bug

NAME

       Qpsmtpd::DSN - Enhanced Mail System Status Codes - RFC 1893

DESCRIPTION

       The Qpsmtpd::DSN implements the Enhanced Mail System Status Codes from RFC 1893.

USAGE

       Any qpsmtpd plugin can access these status codes. All sub routines are used the same way:
        use Qpsmtpd::DSN;
        ...;
        return Qpsmtpd::DSN->relaying_denied();

       or

        return Qpsmtpd::DSN->relaying_denied("Relaying from $ip denied");

       or

        return Qpsmtpd::DSN->relaying_denied(DENY,"Relaying from $ip denied");

       If no status message was given, it will use the predefined one from the RFC. If the first
       argument is numeric, it will use this as a return code, else the default return code is
       used. See below which default return code is used in the different functions.

       The first example will return (DENY, "Relaying denied"); the others (DENY, "Relaying from
       $ip denied"); which will be returned to qpsmtpd.

       In those sub routines which don't start with addr_, sys_, net_, proto_, media_, sec_ I've
       added a default message which describes the status better than the RFC message.

ADDRESS STATUS

       addr_unspecified
                X.1.0 default: DENYSOFT

       no_such_user, addr_bad_dest_mbox
                X.1.1 default: DENY

       addr_bad_dest_system
                X.1.2 default: DENY

       addr_bad_dest_syntax
                X.1.3 default: DENY

       addr_dest_ambigous
                X.1.4 default: DENYSOFT

       addr_rcpt_ok
                X.1.5 default: OK

       addr_mbox_moved
                X.1.6 default: DENY

       addr_bad_from_syntax
                X.1.7 default: DENY

       addr_bad_from_system
                X.1.8 default: DENY

MAILBOX STATUS

       mbox_unspecified
            X.2.0 default: DENYSOFT

       mbox_disabled
            X.2.1 default: DENY ...but RFC says:
               The mailbox exists, but is not accepting messages.  This may
               be a permanent error if the mailbox will never be re-enabled
               or a transient error if the mailbox is only temporarily
               disabled.

       mbox_full
            X.2.2 default: DENYSOFT

       mbox_msg_too_long
            X.2.3 default: DENY

       mbox_list_expansion_problem
            X.2.4 default: DENYSOFT

MAIL SYSTEM STATUS

       sys_unspecified
           X.3.0 default: DENYSOFT

       sys_disk_full
           X.3.1 default: DENYSOFT

       sys_not_accepting_mail
           X.3.2 default: DENYSOFT

       sys_not_supported
           X.3.3 default: DENYSOFT
                     Selected features specified for the message are not
                     supported by the destination system.  This can occur in
                     gateways when features from one domain cannot be mapped onto
                     the supported feature in another.

       sys_msg_too_big
           X.3.4 default DENY

NETWORK AND ROUTING STATUS

       net_unspecified
           X.4.0 default: DENYSOFT

       net_directory_server_failed, temp_resolver_failed
           X.4.3 default: DENYSOFT

       net_system_congested
           X.4.5 default: DENYSOFT

       net_routing_loop, too_many_hops
           X.4.6 default: DENY, but RFC says:
             A routing loop caused the message to be forwarded too many
             times, either because of incorrect routing tables or a user
             forwarding loop. This is useful only as a persistent
             transient error.

           Why do we want to DENYSOFT something like this?

MAIL DELIVERY PROTOCOL STATUS

       proto_unspecified
             X.5.0 default: DENYSOFT

       proto_invalid_command
             X.5.1 default: DENY

       proto_syntax_error
             X.5.2 default: DENY

       proto_rcpt_list_too_long, too_many_rcpts
             X.5.3 default: DENYSOFT

       proto_invalid_cmd_args
             X.5.4 default: DENY

       proto_wrong_version
             X.5.5 default: DENYSOFT

MESSAGE CONTENT OR MESSAGE MEDIA STATUS

       media_unspecified
            X.6.0 default: DENYSOFT

       media_unsupported
            X.6.1 default: DENY

       media_conv_prohibited
            X.6.2 default: DENY

       media_conv_unsupported
            X.6.3 default: DENYSOFT

       media_conv_lossy
            X.6.4 default: DENYSOFT

SECURITY OR POLICY STATUS

       sec_unspecified
               X.7.0 default: DENYSOFT

       sec_sender_unauthorized, bad_sender_ip, relaying_denied
               X.7.1 default: DENY

       sec_list_dest_prohibited
               X.7.2 default: DENY

       sec_conv_failed
               X.7.3 default: DENY

       sec_feature_unsupported
               X.7.4 default: DENY

       sec_crypto_failure
               X.7.5 default: DENY

       sec_crypto_algorithm_unsupported
               X.7.6 default: DENYSOFT

       sec_msg_integrity_failure
               X.7.7 default: DENY