So what does it do ?
PopFetch periodically connects to a POP server and collects all mail for a specific
email account. It then feeds that mail to a local SMTP server so that it is ready
for collection by email clients on the local network.
When PopFetch feeds the messages to the SMTP server it addresses them to the same
recipient
PopFetch can be set to change the domain name of the recipient address(es) before it
passes them on to the SMTP server, so that the SMTP server delivers them to local users,
e.g. if PopFetch collects messages from a POP server at netwin.co.nz ,
say for john@netwin.co.nz,
and PopFetch is set to re-address for, say, branch_office.netwin.co.nz, then it will
re-address the message to john as,
john@branch_office.netwin.co.nz
In conjunction with Netwin's DSMTP, SMTP server . . .
PopFetch works in conjunction with DSMTP (Netwin's SMTP server) so that when it starts
a dial up networking connection, DSMTP can deliver all mail waiting to be sent to
non-local addresses.
What happens when a message cannot be delivered?
POPFetch always copies the current message that it is retrieving to
file (msg.dat). It then tries to send the message immediately on to the
SMTP server. If for any reason this delivery fails, POPFetch stops
and closes all TCPIP connections and waits for the next
dial up time, at which point it will try to send the unsuccessful
message again.
If the message cannot be delivered because the information stored in msg.dat
is corrupt, or the message cannot be sent to any users - even the default address to
say that a user cannot be reached, then POPFetch will write the message
to a 'duds' file, duds.dat. There is a safety net setting, max_duds with a
default of 10, such that if POPFetch detects that it has delivered
the max_duds number of messages in a row to duds.dat then it will shut
itself down (stop the popfetch service on NT).
Notes:
-
If a message fails to be delivered to the SMTP server,
POPFetch stops and closes all TCPIP connections and waits for the next
dial up time, at which point it will try to send the unsuccessful
message again.
- Every time the ras_timer period is reached, popfetch will try to retrieve mail for all accounts
specified by a pf_user line.
- If a message cannot be delivered, for example if the recipient does
not exist or the SMTP server rejects the recipient address, then the fallback
address will receive the message instead. POPFetch adds some informational
lines to the message body stating which recipients have received the message
and which have not.
- log_path \dmail\log (\getall.log)
- work_dir defaults to no path, then log_path def to work dir
- Ras timer sets period of dial rather than interval, by default
(isinterval=FALSE)
- POPFetch knows that the next line of an SMTP response is part of the same
comment when the fourth character of the response is a dash, '-'.
- reads headers that go over multiple lines. The only header where this
matters for POPFetch is the header set by pf_header
- if the pf_header setting cannot be found in the message to be sent out,
POPFetch looks for the 'X-Rcpt-To: ' header, followed by the 'To: ' header,
then if even that header cannot be found it will send the message to the
default address, if that does not exist then the
message will be appended to the duds file, duds.dat
- -DFLT_WORK_PATH does not exist - i.e. use exe directory
- minimum ras_timer setting of 5 minutes if doing RAS
dial, i.e. if you have a ras_entry or ras_number setting, otherwise there is no mimimum
setting.
- The ras dial up is considered to have succeeded if another program is controlling the dial
session - there is a pf_wait setting to set a 'try-again' time to counter the fact that the other
process might still be doing the dialup. This wait period is only used if POPFetch cannot reach
the servers when it wakes up.
- If a message fails to be delivered to multiple recipients, POPFetch will only send
one message to the pf_dflt_address, with a paragraph added to the top of the message specifying
which recipients did not receive the message.