mirror of
https://github.com/vdukhovni/postfix
synced 2025-08-22 18:07:41 +00:00
postfix-2.10-20120130
This commit is contained in:
parent
ba153b33fc
commit
e5dc4dffbc
@ -17589,3 +17589,21 @@ Apologies for any names omitted.
|
|||||||
This is a real stinker that causes Postfix to fail without
|
This is a real stinker that causes Postfix to fail without
|
||||||
any prior warning. File: util/warn_stat.[hc], and everything
|
any prior warning. File: util/warn_stat.[hc], and everything
|
||||||
that directly calls stat(), fstat() or lstat().
|
that directly calls stat(), fstat() or lstat().
|
||||||
|
|
||||||
|
20120127
|
||||||
|
|
||||||
|
Bugfix (introduced: Postfix 2.8): the Postfix client sqlite
|
||||||
|
quoting routine returned the unquoted result instead of the
|
||||||
|
quoted text. The opportunities for misuse are limited,
|
||||||
|
because Postfix sqlite files are usually owned by root, and
|
||||||
|
because Postfix daemons usually run with non-root privileges.
|
||||||
|
File: global/dict_sqlite.c.
|
||||||
|
|
||||||
|
20120130
|
||||||
|
|
||||||
|
Bugfix (introduced: Postfix 2.3): the trace service did not
|
||||||
|
distinguish between notifications for a non-bounce or a
|
||||||
|
single-bounce message. This code pre-dates DSN support and
|
||||||
|
should have been updated when it was re-purposed to handle
|
||||||
|
DSN SUCCESS notifications. Problem reported by Sabahattin
|
||||||
|
Gucukoglu. File: bounce/bounce_trace_service.c.
|
||||||
|
@ -83,8 +83,39 @@ int bounce_trace_service(int flags, char *service, char *queue_name,
|
|||||||
BOUNCE_INFO *bounce_info;
|
BOUNCE_INFO *bounce_info;
|
||||||
int bounce_status = 1;
|
int bounce_status = 1;
|
||||||
VSTREAM *bounce;
|
VSTREAM *bounce;
|
||||||
VSTRING *new_id = vstring_alloc(10);
|
int notify_mask = name_mask(VAR_NOTIFY_CLASSES, mail_error_masks,
|
||||||
|
var_notify_classes);
|
||||||
|
VSTRING *new_id;
|
||||||
int count;
|
int count;
|
||||||
|
const char *sender;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* For consistency with fail/delay notifications, send notification for a
|
||||||
|
* non-bounce message as a single-bounce message, send notification for a
|
||||||
|
* single-bounce message as a double-bounce message, and drop requests to
|
||||||
|
* send notification for a double-bounce message.
|
||||||
|
*/
|
||||||
|
#define NULL_SENDER MAIL_ADDR_EMPTY /* special address */
|
||||||
|
|
||||||
|
if (strcasecmp(recipient, mail_addr_double_bounce()) == 0) {
|
||||||
|
msg_info("%s: not sending notification for double-bounce message",
|
||||||
|
queue_id);
|
||||||
|
return (0);
|
||||||
|
} else if (*recipient == 0) {
|
||||||
|
if ((notify_mask & MAIL_ERROR_2BOUNCE) != 0) {
|
||||||
|
recipient = var_2bounce_rcpt;
|
||||||
|
sender = mail_addr_double_bounce();
|
||||||
|
} else {
|
||||||
|
msg_info("%s: not sending notification for single-bounce message",
|
||||||
|
queue_id);
|
||||||
|
if (mail_queue_remove(service, queue_id) && errno != ENOENT)
|
||||||
|
msg_fatal("remove %s %s: %m", service, queue_id);
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
/* Always send notification for non-bounce message. */
|
||||||
|
sender = NULL_SENDER;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initialize. Open queue file, bounce log, etc.
|
* Initialize. Open queue file, bounce log, etc.
|
||||||
@ -126,7 +157,6 @@ int bounce_trace_service(int flags, char *service, char *queue_name,
|
|||||||
bounce_mail_free(bounce_info);
|
bounce_mail_free(bounce_info);
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
#define NULL_SENDER MAIL_ADDR_EMPTY /* special address */
|
|
||||||
#define NULL_TRACE_FLAGS 0
|
#define NULL_TRACE_FLAGS 0
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -139,7 +169,8 @@ int bounce_trace_service(int flags, char *service, char *queue_name,
|
|||||||
* there are fewer potential left-over files to remove up when we create
|
* there are fewer potential left-over files to remove up when we create
|
||||||
* a new queue file.
|
* a new queue file.
|
||||||
*/
|
*/
|
||||||
if ((bounce = post_mail_fopen_nowait(NULL_SENDER, recipient,
|
new_id = vstring_alloc(10);
|
||||||
|
if ((bounce = post_mail_fopen_nowait(sender, recipient,
|
||||||
INT_FILT_MASK_BOUNCE,
|
INT_FILT_MASK_BOUNCE,
|
||||||
NULL_TRACE_FLAGS,
|
NULL_TRACE_FLAGS,
|
||||||
new_id)) != 0) {
|
new_id)) != 0) {
|
||||||
|
@ -57,6 +57,12 @@
|
|||||||
/* AUTHOR(S)
|
/* AUTHOR(S)
|
||||||
/* Axel Steiner
|
/* Axel Steiner
|
||||||
/* ast@treibsand.com
|
/* ast@treibsand.com
|
||||||
|
/*
|
||||||
|
/* Adopted and updated by:
|
||||||
|
/* Wietse Venema
|
||||||
|
/* IBM T.J. Watson Research
|
||||||
|
/* P.O. Box 704
|
||||||
|
/* Yorktown Heights, NY 10598, USA
|
||||||
/*--*/
|
/*--*/
|
||||||
|
|
||||||
/* System library. */
|
/* System library. */
|
||||||
@ -109,7 +115,7 @@ static void dict_sqlite_quote(DICT *dict, const char *raw_text, VSTRING *result)
|
|||||||
/* Fix 20100616 */
|
/* Fix 20100616 */
|
||||||
if (quoted_text == 0)
|
if (quoted_text == 0)
|
||||||
msg_fatal("dict_sqlite_quote: out of memory");
|
msg_fatal("dict_sqlite_quote: out of memory");
|
||||||
vstring_strcat(result, raw_text);
|
vstring_strcat(result, quoted_text);
|
||||||
sqlite3_free(quoted_text);
|
sqlite3_free(quoted_text);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
* Patches change both the patchlevel and the release date. Snapshots have no
|
* Patches change both the patchlevel and the release date. Snapshots have no
|
||||||
* patchlevel; they change the release date only.
|
* patchlevel; they change the release date only.
|
||||||
*/
|
*/
|
||||||
#define MAIL_RELEASE_DATE "20120124"
|
#define MAIL_RELEASE_DATE "20120130"
|
||||||
#define MAIL_VERSION_NUMBER "2.10"
|
#define MAIL_VERSION_NUMBER "2.10"
|
||||||
|
|
||||||
#ifdef SNAPSHOT
|
#ifdef SNAPSHOT
|
||||||
|
Loading…
x
Reference in New Issue
Block a user