-/*
- * Back end for smtp_vrfy() command
- */
-void smtp_vrfy_backend(struct ctdluser *us, void *data) {
-
- if (!fuzzy_match(us, SMTP->vrfy_match)) {
- ++SMTP->vrfy_count;
- memcpy(&SMTP->vrfy_buffer, us, sizeof(struct ctdluser));
- }
-}
-
-
-/*
- * Implements the VRFY (verify user name) command.
- * Performs fuzzy match on full user names.
- */
-void smtp_vrfy(char *argbuf) {
- SMTP->vrfy_count = 0;
- strcpy(SMTP->vrfy_match, argbuf);
- ForEachUser(smtp_vrfy_backend, NULL);
-
- if (SMTP->vrfy_count < 1) {
- cprintf("550 5.1.1 String does not match anything.\r\n");
- }
- else if (SMTP->vrfy_count == 1) {
- cprintf("250 %s <cit%ld@%s>\r\n",
- SMTP->vrfy_buffer.fullname,
- SMTP->vrfy_buffer.usernum,
- config.c_fqdn);
- }
- else if (SMTP->vrfy_count > 1) {
- cprintf("553 5.1.4 Request ambiguous: %d users matched.\r\n",
- SMTP->vrfy_count);
- }
-
-}
-
-
-
-/*
- * Back end for smtp_expn() command
- */
-void smtp_expn_backend(struct ctdluser *us, void *data) {
-
- if (!fuzzy_match(us, SMTP->vrfy_match)) {
-
- if (SMTP->vrfy_count >= 1) {
- cprintf("250-%s <cit%ld@%s>\r\n",
- SMTP->vrfy_buffer.fullname,
- SMTP->vrfy_buffer.usernum,
- config.c_fqdn);
- }
-
- ++SMTP->vrfy_count;
- memcpy(&SMTP->vrfy_buffer, us, sizeof(struct ctdluser));
- }
-}
-
-
-/*
- * Implements the EXPN (expand user name) command.
- * Performs fuzzy match on full user names.
- */
-void smtp_expn(char *argbuf) {
- SMTP->vrfy_count = 0;
- strcpy(SMTP->vrfy_match, argbuf);
- ForEachUser(smtp_expn_backend, NULL);
-
- if (SMTP->vrfy_count < 1) {
- cprintf("550 5.1.1 String does not match anything.\r\n");
- }
- else if (SMTP->vrfy_count >= 1) {
- cprintf("250 %s <cit%ld@%s>\r\n",
- SMTP->vrfy_buffer.fullname,
- SMTP->vrfy_buffer.usernum,
- config.c_fqdn);
- }
-}
-
-