#include <stdlib.h>
#include <unistd.h>
+#include <fcntl.h>
#include <pwd.h>
#include <syslog.h>
return FALSE;
}
+ if (!auth_success_written) {
+ int fd;
+
+ fd = creat(AUTH_SUCCESS_PATH, 0666);
+ if (fd == -1)
+ i_error("creat(%s) failed: %m", AUTH_SUCCESS_PATH);
+ else
+ (void)close(fd);
+ auth_success_written = TRUE;
+ }
+
auth_master_callback(list[1], list + 2, request);
hash_remove(process->requests, POINTER_CAST(id));
return TRUE;
#include "lib.h"
#include "master-settings.h"
+#define AUTH_SUCCESS_PATH PKG_STATEDIR"/auth-success"
+
extern struct ioloop *ioloop;
extern int null_fd, inetd_login_fd;
extern uid_t master_uid;
extern char program_path[];
extern char ssl_manual_key_password[];
extern const char *env_tz;
+extern bool auth_success_written;
#ifdef DEBUG
extern bool gdb;
#endif
char program_path[PATH_MAX];
char ssl_manual_key_password[100];
const char *env_tz;
+bool auth_success_written;
#ifdef DEBUG
bool gdb;
#endif
i_error("unlink(%s) failed: %m", path);
}
+static void auth_warning_print(void)
+{
+ struct stat st;
+
+ auth_success_written = stat(AUTH_SUCCESS_PATH, &st) == 0;
+ if (!auth_success_written) {
+ i_info("If you have trouble with authentication failures,\n"
+ "enable auth_debug setting. "
+ "See http://wiki.dovecot.org/WhyDoesItNotWork");
+
+ }
+}
+
static void set_logfile(struct settings *set)
{
int facility;
open_fds();
fatal_log_check();
+ if (strcmp(settings_root->defaults->protocols, "none") != 0)
+ auth_warning_print();
if (!foreground)
daemonize(settings_root->defaults);