Exemple #1
0
    int
main( int ac, char *av[ ] )
{
    yastr		test_str;
    struct dmarc	*d;

    if (( ac < 2 ) || ( ac > 5 )) {
	fprintf( stderr, "Usage:\t\t%s hostname [ 5322.From domain ] [ SPF domain ] [ DKIM domain ]\n", av[ 0 ] );
	exit( 1 );
    }

    if ( simta_read_config( SIMTA_FILE_CONFIG ) < 0 ) {
	exit( 1 );
    }

    if ( simta_config( ) != 0 ) {
	exit( 1 );
    }

    simta_openlog( 0, LOG_PERROR );

    dmarc_init( &d );

    dmarc_lookup( d, av[ 1 ] );

    printf( "DMARC lookup result: policy %s, percent %d, result %s\n",
	    dmarc_result_str( d->policy ), d->pct,
	    dmarc_result_str( d->result ));

    if ( ac > 2 ) {
	d->domain = av[ 2 ];
    }

    test_str = yaslauto( d->domain );

    if ( ac > 3 ) {
	dmarc_spf_result( d, av[ 3 ] );
	test_str = yaslcat( test_str, "/" );
	test_str = yaslcat( test_str, av[ 3 ] );
    }
    if ( ac > 4 ) {
	dmarc_dkim_result( d, av[ 4 ] );
	test_str = yaslcat( test_str, "/" );
	test_str = yaslcat( test_str, av[ 4 ] );
    }

    printf( "DMARC policy result for %s: %s\n", test_str,
	    dmarc_result_str( dmarc_result( d )));

    exit( 0 );
}
Exemple #2
0
    int
main( int ac, char *av[ ] )
{
    struct addrinfo     *addrinfo;
    struct addrinfo     hints;
    const char          *addrlookup, *ehlo;
    struct spf          *spf;

    if ( ac < 2 ) {
        fprintf( stderr, "Usage:\t\t%s <email> [ip]\n", av[ 0 ] );
        exit( 1 );
    }

    if ( simta_read_config( SIMTA_FILE_CONFIG ) < 0 ) {
        exit( 1 );
    }

    if ( simta_config( ) != 0 ) {
        exit( 1 );
    }

    simta_openlog( 0, LOG_PERROR );

    simta_debug = 8;

    if ( ac < 3 ) {
        addrlookup = "255.255.255.255";
    } else {
        addrlookup = av[ 2 ];
    }

    if ( ac < 4 ) {
        ehlo = "tallis.marwnad.com";
    } else {
        ehlo = av[ 3 ];
    }

    memset( &hints, 0, sizeof( struct addrinfo ));
    hints.ai_family = AF_UNSPEC;
    hints.ai_flags = AI_NUMERICSERV;
    getaddrinfo( addrlookup, NULL, &hints, &addrinfo );

    spf = spf_lookup( ehlo, av[ 1 ], addrinfo->ai_addr );
    printf( "SPF result: %s\n", spf_result_str( spf->spf_result ));

    exit( 0 );
}
Exemple #3
0
    int
main( int argc, char *argv[])
{
    struct envelope	*env;

    const char		*sender = "*****@*****.**";
    int			c;
    int			nextargc = 1;
    int			exp_level = 0;
    int			error = 0;

    extern int          optind;
    extern char         *optarg;

    simta_debug 	= 1;
    simta_expand_debug	= 1;

    while ((c = getopt(argc, argv, "f:x:")) != EOF)
    {
	switch (c)
	{
	case 'x':
	    if (( exp_level = atoi( optarg )) < 0 ) {
		error++;
	    }
	    nextargc = nextargc + 2;
	    break;

	case 'f':
	    sender = strdup( optarg );
	    nextargc = nextargc + 2;
	    break;

	default:
	    error++;
	    nextargc++;
	    break;
	}
    }
    if (( argc < 3 ) | ( error )) {
	fprintf( stderr, "Usage: %s [ -x level ] [-f sendermail] conf_file "
		"address\n", argv[ 0 ]);
	exit( EX_USAGE );
    }

    if ( simta_read_config( argv[ nextargc ] ) < 0 ) {
	fprintf( stderr, "simta_read_config error: %s\n", argv[ nextargc ] );
	exit( EX_DATAERR );
    }

    /* init simta config / defaults */
    if ( simta_config( ) != 0 ) {
	fprintf( stderr, "simta_config error\n" );
	exit( EX_DATAERR );
    }

    simta_openlog( 0, 0 );

    env = env_create( NULL, "DEAD60FF", sender, NULL );

    env->e_n_exp_level = exp_level;

    do {
	nextargc++;

	printf( "Original Recipient: %s\n", argv[ nextargc ]);
	env_recipient( env, argv[ nextargc ]);

    } while ( nextargc < argc - 1 );

    if ( expand( env ) != 0 ) {
	return( 1 );
    }
    env_free( env );

    return( 0 );
}
Exemple #4
0
    int
main( int argc, char **argv )
{
    int			c, err = 0;
    int			dump = 0;
    extern char		*optarg;

    if (( progname = strrchr( argv[ 0 ], '/' )) == NULL ) {
	progname = argv[ 0 ];
    } else {
	progname++;
    }

    while (( c = getopt( argc, argv, "di:o:v" )) != -1 ) {
	switch ( c ) {
	case 'd':
	    dump++;
	    break;

	case 'i':
	    input = optarg;
	    break;

	case 'o':
	    output = optarg;
	    break;

	case 'v':
	    verbose++;
	    break;

	default:
	    err++;
	}
    }

    if ( err ) {
	fprintf( stderr, "usage: %s ", progname );
	fprintf( stderr, "[ -d ] [ -i input-file ] [ -o output-file ]" );
	fprintf( stderr, "\n" );
	exit( 1 );
    }

    if ( simta_read_config( SIMTA_FILE_CONFIG ) < 0 ) {
	fprintf( stderr, "simta_read_config error: %s\n", SIMTA_FILE_CONFIG );
	exit( 1 );
    }

    /* Make sure error and verbose output are nicely synced */
    setbuf( stdout, NULL );

    if ( dump ) {
	if ( input == NULL ) {
	    input = simta_default_alias_db;
	}
	if ( output == NULL ) {
	    foutput = stdout;
	} else {
	    if (( foutput = fopen( output, "r" )) == NULL ) {
		perror( output );
		exit( 1 );
	    }
	}
	exit( simalias_dump( ));

    } else {
	/* not dump */
	if (( input == NULL ) && ( strcmp( progname, "newaliases" ) == 0 )) {
	    input = simta_default_alias_file;
	}

	if ( input == NULL ) {
	    finput = stdin;
	} else {
	    if (( finput = fopen( input, "r" )) == NULL ) {
		perror( input );
		exit( 1 );
	    }
	}
	if ( output == NULL ) {
	    output = simta_default_alias_db;
	}
	exit( simalias_create( ));
    }
}