# smfi_setsymlist

SYNOPSIS

    #include <libmilter/mfapi.h>
    int smfi_setsymlist(
            SMFICTX    *ctx,
    	int        stage,
    	char       *macros
    );

Set the list of macros that the milter wants to receive from the MTA for a protocol stage.

DESCRIPTION

Called When | This function must only be called during xxfi_negotiate().
Effects | This function can be used to override the list of macros that the milter wants to receive from the MTA.

ARGUMENTS

Argument | Description
--- | ---
ctx | the opaque context structure.
stage | the protocol stage during which the macro list should be used. See the file `include/libmilter/mfapi.h` for legal values, look for the C macros with the prefix `SMFIM_`. Available protocol stages are at least the initial connection, HELO/EHLO, MAIL, RCPT, DATA, end of header, and the end of a message.
macros | list of macros (separated by space). Example: "{rcpt_mailer} {rcpt_host}" An empty string ("", not NULL) can be used to specify that no macros should be sent.

RETURN VALUES

MI_FAILURE is returned if

- there is not enough free memory to make a copy of the macro list,
- `macros` is `NULL`,
- `stage` is not a valid protocol stage,
- the macro list for `stage` has been set before.

Otherwise MI_SUCCESS is returned.

NOTES | There is an internal limit on the number of macros that can be set (currently 50), however, this limit is not enforced by libmilter, only by the MTA, but a possible violation of this restriction is not communicated back to the milter.

Copyright (c) 2006, 2012 Proofpoint, Inc. and its suppliers. All rights reserved.
By using this file, you agree to the terms and conditions set forth in the LICENSE.