aboutsummaryrefslogtreecommitdiffstats
Commit message (Expand)AuthorAgeFilesLines
...
* We know APOP works. Also add a POP3 optimization.Eric S. Raymond1996-09-275-6/+23
* Corrected date.Eric S. Raymond1996-09-261-1/+1
* No more rpopid field.Eric S. Raymond1996-09-267-19/+20
* Teach it to do rpop.Eric S. Raymond1996-09-261-0/+1
* Add code to bind to privileged port as needed for RPOP.Eric S. Raymond1996-09-263-1/+35
* Reorganize to speed up typical case.Eric S. Raymond1996-09-261-37/+43
* Quiet the program.Eric S. Raymond1996-09-261-1/+1
* Even more improved sizeticker.Eric S. Raymond1996-09-261-1/+1
* Even more improved sizeticker.Eric S. Raymond1996-09-262-3/+5
* Economize on buffer space.Eric S. Raymond1996-09-261-5/+3
* Get the version info right.Eric S. Raymond1996-09-251-1/+1
* We can date things now.Eric S. Raymond1996-09-251-1/+1
* We can date things now.Eric S. Raymond1996-09-251-6/+6
* Updated documentation.Eric S. Raymond1996-09-252-13/+19
* Updated documentation.Eric S. Raymond1996-09-252-3/+11
* Correct a prompt.Eric S. Raymond1996-09-251-1/+1
* Name of run control file changed.Eric S. Raymond1996-09-252-41/+40
* Change the `explicit' option to `skip'.Eric S. Raymond1996-09-257-15/+17
* Make `explicit' work now.Eric S. Raymond1996-09-252-4/+21
* Explicit option is documented and set up in the data structure,Eric S. Raymond1996-09-256-6/+30
* Expanded TO DO list.Eric S. Raymond1996-09-251-0/+2
* Expanded TO DO list.Eric S. Raymond1996-09-251-3/+4
* Add a security warning.Eric S. Raymond1996-09-251-8/+13
* Note a feature change.Eric S. Raymond1996-09-251-0/+4
* Move Chris Newman's criticism here.Eric S. Raymond1996-09-251-0/+44
* Gotcha.Eric S. Raymond1996-09-251-48/+6
* Typo fix.Eric S. Raymond1996-09-251-1/+1
* Change installation production.Eric S. Raymond1996-09-251-1/+1
* Reorganize to eliminate forward declarations.Eric S. Raymond1996-09-251-2/+3
* Eliminate an #ifdef.Eric S. Raymond1996-09-251-282/+278
* Eliminate unnecessary verbiage.Eric S. Raymond1996-09-251-6/+0
* Prevent buffer overun.Eric S. Raymond1996-09-251-1/+1
* Yet more simplification.Eric S. Raymond1996-09-251-131/+49
* Another simplification.Eric S. Raymond1996-09-251-39/+7
* One more simplification.Eric S. Raymond1996-09-251-36/+4
* Eliminate some unnecessary headers.Eric S. Raymond1996-09-254-52/+8
* POP2 now goes through the generic driver.Eric S. Raymond1996-09-254-530/+132
* Minor fixes.Eric S. Raymond1996-09-241-2/+5
* Quiet the program down a bit.Eric S. Raymond1996-09-243-10/+19
* Corrections.Eric S. Raymond1996-09-241-39/+40
* Added a needed prototype.Eric S. Raymond1996-09-241-1/+1
* Prevent buffer overrun.Eric S. Raymond1996-09-241-1/+1
* Eliminated the errorcodes file.Eric S. Raymond1996-09-241-3/+2
* *** empty log message ***Eric S. Raymond1996-09-242-6/+7
* *** empty log message ***Eric S. Raymond1996-09-243-7/+5
* Moved the protocol designation definition.Eric S. Raymond1996-09-243-4/+9
* Remove same name dependencies.Eric S. Raymond1996-09-245-19/+21
* Remove some dependencies on the name of the rc file.Eric S. Raymond1996-09-243-12/+12
* Improved RFC822 conformance in SMTP code.Eric S. Raymond1996-09-244-28/+45
* The great name change, again.Eric S. Raymond1996-09-241-3/+8
class="w"> for (qnp = ctl->smtphunt; qnp; qnp = qnp->next) { /* ship the actual poll and get the response */ gen_send(sock, "ETRN %s", qnp->id); if ((ok = gen_recv(sock, buf, sizeof(buf)))) return(ok); /* this switch includes all response codes described in RFC1985 */ switch(atoi(buf)) { case 250: /* OK, queuing for node <x> started */ error(0, 0, "Queuing for %s started", qnp->id); break; case 251: /* OK, no messages waiting for node <x> */ error(0, 0, "No messages waiting for %s", qnp->id); return(PS_NOMAIL); case 252: /* OK, pending messages for node <x> started */ case 253: /* OK, <n> pending messages for node <x> started */ error(0, 0, "Pending messages for %s started", qnp->id); break; case 458: /* Unable to queue messages for node <x> */ error(0, -1, "Unable to queue messages for node %s",qnp->id); return(PS_PROTOCOL); case 459: /* Node <x> not allowed: <reason> */ error(0, -1, "Node %s not allowed: %s", qnp->id, buf); return(PS_AUTHFAIL); case 500: /* Syntax Error */ error(0, -1, "ETRN syntax error"); return(PS_PROTOCOL); case 501: /* Syntax Error in Parameters */ error(0, -1, "ETRN syntax error in parameters"); return(PS_PROTOCOL); default: error(0, -1, "Unknown ETRN error %d", atoi(buf)); return(PS_PROTOCOL); } } return(0); } static int etrn_logout(int sock, struct query *ctl) /* send logout command */ { return(gen_transact(sock, "QUIT")); } const static struct method etrn = { "ETRN", /* ESMTP ETRN extension */ #if INET6 "smtp", /* standard SMTP port */ #else /* INET6 */ 25, /* standard SMTP port */ #endif /* INET6 */ FALSE, /* this is not a tagged protocol */ FALSE, /* this does not use a message delimiter */ etrn_ok, /* parse command response */ NULL, /* no need to get authentication */ etrn_getrange, /* initialize message sending */ NULL, /* we cannot get a list of sizes */ NULL, /* how do we tell a message is old? */ NULL, /* no way to fetch headers */ NULL, /* no way to fetch body */ NULL, /* no message trailer */ NULL, /* how to delete a message */ etrn_logout, /* log out, we're done */ FALSE, /* no, we can't re-poll */ }; int doETRN (struct query *ctl) /* retrieve messages using ETRN */ { int status; if (ctl->keep) { fprintf(stderr, "Option --keep is not supported with ETRN\n"); return(PS_SYNTAX); } if (ctl->flush) { fprintf(stderr, "Option --flush is not supported with ETRN\n"); return(PS_SYNTAX); } if (ctl->mailboxes->id) { fprintf(stderr, "Option --remote is not supported with ETRN\n"); return(PS_SYNTAX); } if (check_only) { fprintf(stderr, "Option --check is not supported with ETRN\n"); return(PS_SYNTAX); } peek_capable = FALSE; status = do_protocol(ctl, &etrn); if (status == PS_NOMAIL) status = PS_SUCCESS; return(status); } #endif /* ETRN_ENABLE */ /* etrn.c ends here */