lmtp-local.c revision fb2e20a30de93e83bbfe407f8231181f69ae684f
bee2440354b4bc8796e1de0b6cbd60e1f68deba0Phill Cunnington/* Copyright (c) 2009-2017 Dovecot authors, see the included COPYING file */
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster#define ERRSTR_TEMP_MAILBOX_FAIL "451 4.3.0 <%s> Temporary internal error"
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster#define ERRSTR_TEMP_USERDB_FAIL_PREFIX "451 4.3.0 <%s> "
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fostervoid client_rcpt_anvil_disconnect(const struct mail_recipient *rcpt)
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster const struct mail_storage_service_input *input;
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster input = mail_storage_service_user_get_input(rcpt->service_user);
bee2440354b4bc8796e1de0b6cbd60e1f68deba0Phill Cunnington master_service_anvil_send(master_service, t_strconcat(
bee2440354b4bc8796e1de0b6cbd60e1f68deba0Phill Cunnington "DISCONNECT\t", my_pid, "\t", master_service_get_name(master_service),
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterclient_send_line_overquota(struct client *client,
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster const struct mail_recipient *rcpt, const char *error)
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster mail_storage_service_user_get_set(rcpt->service_user)[2];
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster lda_set->quota_full_tempfail ? "452 4.2.2" : "552 5.2.2",
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Fosterlmtp_rcpt_to_is_over_quota(struct client *client,
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster /* mail user will be created second time when mail is saved,
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster so it's session_id needs to be different,
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster but second time session_id needs to be the same as rcpt session_id and
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster mail user session id for the first rcpt should not overlap with session id
bee2440354b4bc8796e1de0b6cbd60e1f68deba0Phill Cunnington of the second recipient, so add custom ":quota" suffix to the session_id without
bee2440354b4bc8796e1de0b6cbd60e1f68deba0Phill Cunnington session_id counter increment, so next time mail user will get
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster the same session id as rcpt */
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster ret = mail_storage_service_next_with_session_suffix(storage_service,
4a2f0f0be43dfd4c1b490cbf3cc48b6ba6084b1cAllan Foster ns = mail_namespace_find_inbox(user->namespaces);
if (ret < 0) {
return ret;
int ret;
if (ret < 0) {
return FALSE;
return TRUE;
unsigned int parallel_count = 0;
void **sets;
int ret;
i_unreached();
&error);
if (ret > 0) {
&error);
if (ret <= 0) {
ret = 0;
return ret;
unsigned int count;
int ret;
if ((ret == 0 &&
} else if (ret == 0) {
return first_uid;