/* Copyright (c) 2009-2018 Dovecot authors, see the included COPYING file */
#include "lib.h"
#include "array.h"
#include "str.h"
#include "istream.h"
#include "istream-concat.h"
#include "ostream.h"
#include "iostream-temp.h"
#include "master-service.h"
#include "settings-parser.h"
#include "lda-settings.h"
#include "mail-user.h"
#include "lmtp-settings.h"
#include "smtp-address.h"
#include "smtp-server.h"
#include "lmtp-proxy.h"
#include "lmtp-local.h"
#include "mail-deliver.h"
#include "mail-error.h"
#include "main.h"
#include "client.h"
#include "commands.h"
/*
* MAIL command
*/
{
/* connect to anvil before dropping privileges */
}
return 1;
}
/*
* RCPT command
*/
struct smtp_server_cmd_rcpt *data)
{
int ret;
/* proxied? */
return (ret < 0 ? -1 : 0);
/* no */
}
/* local delivery */
}
/*
* DATA command
*/
static void
struct smtp_server_transaction *trans)
{
/* headers for local deliveries only */
/* headers for local and proxied messages */
}
static int
struct smtp_server_cmd_ctx *cmd,
struct smtp_server_transaction *trans)
{
/* finish the message */
/* formulate prepended headers for both local and proxy delivery */
/* construct message streams for local and proxy delivery */
i_stream_unref(&inputs[0]);
}
i_stream_unref(&inputs[0]);
}
/* local delivery */
}
/* proxy delivery */
}
return 0;
}
struct smtp_server_transaction *trans)
{
const unsigned char *data;
i_error("write(%s) failed: %s",
"Temporary internal failure");
return -1;
}
}
if (ret == 0)
return 0;
/* client probably disconnected */
return -1;
}
/* the ending "." line was seen. finish delivery. */
}
struct smtp_server_cmd_ctx *cmd,
struct smtp_server_transaction *trans,
struct istream *data_input)
{
return 0;
}