- if ((word = strtok(line, EQS)) != NULL) {
- data = strtok(NULL, EQS);
- if (strcmp(word, "SMARTHOST") == 0) {
- if (data != NULL)
- config->smarthost = strdup(data);
- }
- else if (strcmp(word, "PORT") == 0) {
- if (data != NULL)
- config->port = atoi(strdup(data));
- }
- else if (strcmp(word, "ALIASES") == 0) {
- if (data != NULL)
- config->aliases = strdup(data);
- }
- else if (strcmp(word, "SPOOLDIR") == 0) {
- if (data != NULL)
- config->spooldir = strdup(data);
- }
- else if (strcmp(word, "VIRTPATH") == 0) {
- if (data != NULL)
- config->virtualpath = strdup(data);
- }
- else if (strcmp(word, "AUTHPATH") == 0) {
- if (data != NULL)
- config->authpath= strdup(data);
- }
- else if (strcmp(word, "CERTFILE") == 0) {
- if (data != NULL)
- config->certfile = strdup(data);
+
+ data = line;
+ word = strsep(&data, EQS);
+
+ /* Ignore empty lines */
+ if (word == NULL || *word == 0)
+ continue;
+
+ if (data != NULL && *data != 0)
+ data = strdup(data);
+ else
+ data = NULL;
+
+ if (strcmp(word, "SMARTHOST") == 0 && data != NULL)
+ config.smarthost = data;
+ else if (strcmp(word, "PORT") == 0 && data != NULL)
+ config.port = atoi(data);
+ else if (strcmp(word, "ALIASES") == 0 && data != NULL)
+ config.aliases = data;
+ else if (strcmp(word, "SPOOLDIR") == 0 && data != NULL)
+ config.spooldir = data;
+ else if (strcmp(word, "AUTHPATH") == 0 && data != NULL)
+ config.authpath= data;
+ else if (strcmp(word, "CERTFILE") == 0 && data != NULL)
+ config.certfile = data;
+ else if (strcmp(word, "MAILNAME") == 0 && data != NULL)
+ config.mailname = data;
+ else if (strcmp(word, "MASQUERADE") == 0 && data != NULL) {
+ char *user = NULL, *host = NULL;
+ if (strrchr(data, '@')) {
+ host = strrchr(data, '@');
+ *host = 0;
+ host++;
+ user = data;
+ } else {
+ host = data;