Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Can't send mail again.

0 views
Skip to first unread message

Simon Josefsson

unread,
Aug 10, 2002, 6:59:56 AM8/10/02
to
Jordan Katz <ka...@underlevel.net> writes:

> Hi,
>
> I'm having a problem with my Oort Gnus client (v0.07). When I
> attempt to send mail anywhere, it bounces back instantly saying the
> domain is untraceable. Yet, I am able to receive all mail.
>
> If I ssh into the mail server that I'm using I am able to send mail
> with no problem.
>
> Any ideas what could be causing this? Where I could check?
>
> I am using smtpmail.el to authenticate. It has all worked fine
> before, it just broke out of the blue.

Toggle `smtpmail-debug-info' and cut'n'paste the contents of the
*trace of SMTP session to foobar* buffer when this happens.

Jordan Katz

unread,
Aug 12, 2002, 2:50:39 PM8/12/02
to
Simon Josefsson <j...@extundo.com> writes:

For some reason, smtpmail is not invoked when I send mail, so I can't
get the *trace ...* buffer.

In my ~/.emacs I have the following vars set:

'(smtpmail-default-smtp-server "server.com")
'(smtpmail-smtp-server "server.com")
'(smtpmail-auth-credentials (quote (("mindspring.com" 25 "myuserid" nil))))
'(smtpmail-debug-info t)
'(smtpmail-sendto-domain ""))

Yet when I send a message via mail in Gnus (C-c c) smtpmail is not
even invoked. Before, it used to show a little 'chat' with the mail
server below the modeline and now it only says "Sending message via
mail" and it instantly bounces back saying the domain was
untraceable.

I tried M-x load-library path-for-smtpmail.el even though that line is
already in my ~/.emacs just in case, and it did not change. Any
ideas? I'm using Oort Gnus. All of this setup worked before I don't
know what changed.

Thanks a lot,
--
Jordan Katz <ka...@underlevel.net> | Mind the gap

Simon Josefsson

unread,
Aug 13, 2002, 3:41:04 PM8/13/02
to
Jordan Katz <ka...@underlevel.net> writes:

> For some reason, smtpmail is not invoked when I send mail, so I can't
> get the *trace ...* buffer.

smtpmail is not used by default, so you must tell Gnus to use it.

> In my ~/.emacs I have the following vars set:
>
> '(smtpmail-default-smtp-server "server.com")
> '(smtpmail-smtp-server "server.com")
> '(smtpmail-auth-credentials (quote (("mindspring.com" 25 "myuserid" nil))))
> '(smtpmail-debug-info t)
> '(smtpmail-sendto-domain ""))

Add:

'(message-send-mail-function (quote smtpmail-send-it))

Jordan Katz

unread,
Aug 13, 2002, 6:02:05 AM8/13/02
to
Simon Josefsson <j...@extundo.com> writes:

I added this, reloaded Emacs + Gnus and now when I send mail it says:

SMTP password for server.net:25:

I type my password and it says "Mechanism nil not implemented" and the
message is not sent. Any ideas on how to fix this?

Thanks a lot for your help,

Simon Josefsson

unread,
Aug 13, 2002, 6:54:10 PM8/13/02
to
Jordan Katz <ka...@underlevel.net> writes:

> I added this, reloaded Emacs + Gnus and now when I send mail it says:
>
> SMTP password for server.net:25:
>
> I type my password and it says "Mechanism nil not implemented" and the
> message is not sent. Any ideas on how to fix this?

Ah, this looks like a bug that was fixed recently. Can you try
checking out smtpmail.el from Emacs CVS? There is a webcvs on
savannah.gnu.org somewhere. It should work with Emacs 21.2, I think.

Jordan Katz

unread,
Aug 14, 2002, 2:37:09 PM8/14/02
to
Simon Josefsson <j...@extundo.com> writes:

I updated smtpmail.el and now I get the error:

Autoloading failed to load mail-check-safe-charset

when attempting to send mail, and the message is not sent. How is
this fixed?

Thanks a lot,

Simon Josefsson

unread,
Aug 15, 2002, 6:47:06 PM8/15/02
to
Jordan Katz <ka...@underlevel.net> writes:

You seem to have found the XEmacs smtpmail.el, it wont work under
Emacs. Try the one at:

http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/emacs/emacs/lisp/mail/smtpmail.el?rev=1.44

Hopefully it won't require updating any other elisp files too, but I
can't promise anything.

Thanks for testing this -- although within a few weeks I hope to check
in a proper SASL library in Emacs and make smtpmail.el use that
instead of the current ad-hoc SASL stuff in smtpmail.el. If you want
to test that too, it would be useful. :)

Jordan Katz

unread,
Aug 16, 2002, 10:26:25 AM8/16/02
to
Simon Josefsson <j...@extundo.com> writes:

> Jordan Katz <ka...@underlevel.net> writes:
>
>> Simon Josefsson <j...@extundo.com> writes:
>>
>>> Jordan Katz <ka...@underlevel.net> writes:
>>>
>>>> I added this, reloaded Emacs + Gnus and now when I send mail it says:
>>>>
>>>> SMTP password for server.net:25:
>>>>
>>>> I type my password and it says "Mechanism nil not implemented" and the
>>>> message is not sent. Any ideas on how to fix this?
>>>
>>> Ah, this looks like a bug that was fixed recently. Can you try
>>> checking out smtpmail.el from Emacs CVS? There is a webcvs on
>>> savannah.gnu.org somewhere. It should work with Emacs 21.2, I think.
>>
>> I updated smtpmail.el and now I get the error:
>>
>> Autoloading failed to load mail-check-safe-charset
>>
>> when attempting to send mail, and the message is not sent. How is
>> this fixed?
>
> You seem to have found the XEmacs smtpmail.el, it wont work under
> Emacs. Try the one at:
>
> http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/emacs/emacs/lisp/mail/smtpmail.el?rev=1.44
>
> Hopefully it won't require updating any other elisp files too, but I
> can't promise anything.

Unfortunately the same thing happens again.. it prompts me for a
password, and when entered, "Mechanism nil is not implemented."

> Thanks for testing this -- although within a few weeks I hope to check
> in a proper SASL library in Emacs and make smtpmail.el use that
> instead of the current ad-hoc SASL stuff in smtpmail.el. If you want
> to test that too, it would be useful. :)

No problem--I would love to test your new work. I can't survive
without this package.

Thanks,

Simon Josefsson

unread,
Aug 17, 2002, 4:17:47 PM8/17/02
to
Jordan Katz <ka...@underlevel.net> writes:

>> You seem to have found the XEmacs smtpmail.el, it wont work under
>> Emacs. Try the one at:
>>
>> http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/emacs/emacs/lisp/mail/smtpmail.el?rev=1.44
>>
>> Hopefully it won't require updating any other elisp files too, but I
>> can't promise anything.
>
> Unfortunately the same thing happens again.. it prompts me for a
> password, and when entered, "Mechanism nil is not implemented."

Argh, sorry, I hadn't committed the patch, as the person who reported
it said if it solved the problem, or I forgot about installing it.
Anyway, could you perhaps apply this and check if it works and let me
know? Then I could really install it (or not).

--- smtpmail.el.~1.44.~ 2002-05-14 23:56:46.000000000 +0200
+++ smtpmail.el 2002-08-17 11:15:19.000000000 +0200
@@ -472,7 +474,7 @@

(defun smtpmail-try-auth-methods (process supported-extensions host port)
(let* ((mechs (cdr-safe (assoc 'auth supported-extensions)))
- (mech (car (smtpmail-intersection smtpmail-auth-supported mechs)))
+ (mech (car (smtpmail-intersection mechs smtpmail-auth-supported)))
(cred (if (stringp smtpmail-auth-credentials)
(let* ((netrc (netrc-parse smtpmail-auth-credentials))
(hostentry (netrc-machine

>> Thanks for testing this -- although within a few weeks I hope to check
>> in a proper SASL library in Emacs and make smtpmail.el use that
>> instead of the current ad-hoc SASL stuff in smtpmail.el. If you want
>> to test that too, it would be useful. :)
>
> No problem--I would love to test your new work. I can't survive
> without this package.

It will be several files, so I suggest checking out Emacs from CVS if
you want to test it. But it won't be added before a few weeks though.

Simon Josefsson

unread,
Aug 17, 2002, 4:28:43 PM8/17/02
to
Jordan Katz <ka...@underlevel.net> writes:

>> You seem to have found the XEmacs smtpmail.el, it wont work under
>> Emacs. Try the one at:
>>
>> http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/emacs/emacs/lisp/mail/smtpmail.el?rev=1.44
>>
>> Hopefully it won't require updating any other elisp files too, but I
>> can't promise anything.
>
> Unfortunately the same thing happens again.. it prompts me for a
> password, and when entered, "Mechanism nil is not implemented."

Argh, sorry, I hadn't committed the patch, as the person who reported
it didn't say if it solved the problem, or I forgot about installing


it. Anyway, could you perhaps apply this and check if it works and
let me know? Then I could really install it (or not).

--- smtpmail.el.~1.44.~ 2002-05-14 23:56:46.000000000 +0200
+++ smtpmail.el 2002-08-17 11:15:19.000000000 +0200
@@ -472,7 +474,7 @@

(defun smtpmail-try-auth-methods (process supported-extensions host port)
(let* ((mechs (cdr-safe (assoc 'auth supported-extensions)))
- (mech (car (smtpmail-intersection smtpmail-auth-supported mechs)))
+ (mech (car (smtpmail-intersection mechs smtpmail-auth-supported)))
(cred (if (stringp smtpmail-auth-credentials)
(let* ((netrc (netrc-parse smtpmail-auth-credentials))
(hostentry (netrc-machine

>> Thanks for testing this -- although within a few weeks I hope to check


>> in a proper SASL library in Emacs and make smtpmail.el use that
>> instead of the current ad-hoc SASL stuff in smtpmail.el. If you want
>> to test that too, it would be useful. :)
>
> No problem--I would love to test your new work. I can't survive
> without this package.

It will be several files, so I suggest checking out Emacs from CVS if

Jordan Katz

unread,
Aug 21, 2002, 2:00:38 AM8/21/02
to
Simon Josefsson <j...@extundo.com> writes:

> Jordan Katz <ka...@underlevel.net> writes:
>
>>> You seem to have found the XEmacs smtpmail.el, it wont work under
>>> Emacs. Try the one at:
>>>

>>> Hopefully it won't require updating any other elisp files too, but I
>>> can't promise anything.
>>
>> Unfortunately the same thing happens again.. it prompts me for a
>> password, and when entered, "Mechanism nil is not implemented."
>
> Argh, sorry, I hadn't committed the patch, as the person who reported
> it said if it solved the problem, or I forgot about installing it.
> Anyway, could you perhaps apply this and check if it works and let me
> know? Then I could really install it (or not).

[snip patch]

I saved the above as smtpmail.el.patch then:

# patch smtpmail.el smtpmail.el.patch
patching file smtpmail.el

reloaded emacs, gnus and the same problem occurs: "Mechanism nil not
implemented." What could this be?

Simon Josefsson

unread,
Aug 21, 2002, 1:25:33 PM8/21/02
to
Jordan Katz <ka...@underlevel.net> writes:

Did you recompile the file? Either remove smtpmail.elc, or do M-x
byte-compile-file RET on the file. The first is probably better
though, as it makes backtraces contain more information in case you
get more problems and report the backtrace.

Jordan Katz

unread,
Aug 22, 2002, 3:37:36 AM8/22/02
to
Simon Josefsson <j...@extundo.com> writes:

No I didn't, I forgot hehe. But I removed smtpmail.elc, did M-x
byte-compile-file etc. and still the same error: "Mechanism nil not
implemented". Just incase there's no misunderstanding or the patch
wasn't applied as expected, here's an exact copy of the smtpmail.el
I'm using, located in /usr/lib and loaded using (load-file
"/usr/lib/emacs/21.2/i386-debian-linux-gnu/smtpmail.el") from
~/.gnus..

== smtpmail.el ==
(require 'sendmail)
(require 'time-stamp)
(autoload 'starttls-open-stream "starttls")
(autoload 'starttls-negotiate "starttls")
(autoload 'mail-strip-quoted-names "mail-utils")
(autoload 'message-make-date "message")
(autoload 'message-make-message-id "message")
(autoload 'rfc2104-hash "rfc2104")
(autoload 'netrc-parse "netrc")
(autoload 'netrc-machine "netrc")
(autoload 'netrc-get "netrc")

;;;
(defgroup smtpmail nil
"SMTP protocol for sending mail."
:group 'mail)


(defcustom smtpmail-default-smtp-server nil
"*Specify default SMTP server."
:type '(choice (const nil) string)
:group 'smtpmail)

(defcustom smtpmail-smtp-server
(or (getenv "SMTPSERVER") smtpmail-default-smtp-server)
"*The name of the host running SMTP server."
:type '(choice (const nil) string)
:group 'smtpmail)

(defcustom smtpmail-smtp-service 25
"*SMTP service port number.
The default value would be \"smtp\" or 25 ."
:type '(choice (integer :tag "Port") (string :tag "Service"))
:group 'smtpmail)

(defcustom smtpmail-local-domain nil
"*Local domain name without a host name.
If the function (system-name) returns the full internet address,
don't define this value."
:type '(choice (const nil) string)
:group 'smtpmail)

(defcustom smtpmail-sendto-domain nil
"*Local domain name without a host name.
This is appended (with an @-sign) to any specified recipients which do
not include an @-sign, so that each RCPT TO address is fully qualified.
\(Some configurations of sendmail require this.)

Don't bother to set this unless you have get an error like:
Sending failed; SMTP protocol error
when sending mail, and the *trace of SMTP session to <somewhere>*
buffer includes an exchange like:
RCPT TO: <someone>
501 <someone>: recipient address must contain a domain
"
:type '(choice (const nil) string)
:group 'smtpmail)

(defcustom smtpmail-debug-info nil
"Whether to print info in buffer *trace of SMTP session to <somewhere>*.
See also `smtpmail-debug-verb' which determines if the SMTP protocol should
be verbose as well."
:type 'boolean
:group 'smtpmail)

(defcustom smtpmail-debug-verb nil
"Whether this library sends the SMTP VERB command or not.
The commands enables verbose information from the SMTP server."
:type 'boolean
:group 'smtpmail)

(defcustom smtpmail-code-conv-from nil ;; *junet*
"*smtpmail code convert from this code to *internal*..for tiny-mime.."
:type 'boolean
:group 'smtpmail)

(defcustom smtpmail-queue-mail nil
"*Specify if mail is queued (if t) or sent immediately (if nil).
If queued, it is stored in the directory `smtpmail-queue-dir'
and sent with `smtpmail-send-queued-mail'."
:type 'boolean
:group 'smtpmail)

(defcustom smtpmail-queue-dir "~/Mail/queued-mail/"
"*Directory where `smtpmail.el' stores queued mail."
:type 'directory
:group 'smtpmail)

(defcustom smtpmail-auth-credentials "~/.authinfo"
"Specify username and password for servers, directly or via .netrc file.
This variable can either be a filename pointing to a file in netrc(5)
format, or list of four-element lists that contain, in order,
`servername' (a string), `port' (an integer), `user' (a string) and
`password' (a string, or nil to query the user when needed). If you
need to enter a `realm' too, add it to the user string, so that it
looks like `user@realm'."
:type '(choice file
(repeat (list (string :tag "Server")
(integer :tag "Port")
(string :tag "Username")
(choice (const :tag "Query when needed" nil)
(string :tag "Password")))))
:version "21.4"
:group 'smtpmail)

(defcustom smtpmail-starttls-credentials '(("" 25 "" ""))
"Specify STARTTLS keys and certificates for servers.
This is a list of four-element list with `servername' (a string),
`port' (an integer), `key' (a filename) and `certificate' (a filename)."
:type '(repeat (list (string :tag "Server")
(integer :tag "Port")
(file :tag "Key")
(file :tag "Certificate")))
:version "21.1"
:group 'smtpmail)

(defcustom smtpmail-warn-about-unknown-extensions nil
"*If set, print warnings about unknown SMTP extensions.
This is mainly useful for development purposes, to learn about
new SMTP extensions that might be useful to support."
:type 'boolean
:version "21.1"
:group 'smtpmail)

(defvar smtpmail-queue-index-file "index"
"File name of queued mail index,
This is relative to `smtpmail-queue-dir'.")

(defvar smtpmail-address-buffer)
(defvar smtpmail-recipient-address-list)

(defvar smtpmail-queue-counter 0)

;; Buffer-local variable.
(defvar smtpmail-read-point)

(defvar smtpmail-queue-index (concat smtpmail-queue-dir
smtpmail-queue-index-file))

(defconst smtpmail-auth-supported '(cram-md5 login)
"List of supported SMTP AUTH mechanisms.")

;;;
;;;
;;;

(defvar smtpmail-mail-address nil
"Value of `user-mail-address' in ambient buffer.")

;;;###autoload
(defun smtpmail-send-it ()
(let ((errbuf (if mail-interactive
(generate-new-buffer " smtpmail errors")
0))
(tembuf (generate-new-buffer " smtpmail temp"))
(case-fold-search nil)
delimline
(mailbuf (current-buffer))
(smtpmail-mail-address user-mail-address)
(smtpmail-code-conv-from
(if enable-multibyte-characters
(let ((sendmail-coding-system smtpmail-code-conv-from))
(select-message-coding-system)))))
(unwind-protect
(save-excursion
(set-buffer tembuf)
(erase-buffer)
(insert-buffer-substring mailbuf)
(goto-char (point-max))
;; require one newline at the end.
(or (= (preceding-char) ?\n)
(insert ?\n))
;; Change header-delimiter to be what sendmail expects.
(mail-sendmail-undelimit-header)
(setq delimline (point-marker))
;; (sendmail-synch-aliases)
(if mail-aliases
(expand-mail-aliases (point-min) delimline))
(goto-char (point-min))
;; ignore any blank lines in the header
(while (and (re-search-forward "\n\n\n*" delimline t)
(< (point) delimline))
(replace-match "\n"))
(let ((case-fold-search t))
;; We used to process Resent-... headers here,
;; but it was not done properly, and the job
;; is done correctly in smtpmail-deduce-address-list.
;; Don't send out a blank subject line
(goto-char (point-min))
(if (re-search-forward "^Subject:\\([ \t]*\n\\)+\\b" delimline t)
(replace-match "")
;; This one matches a Subject just before the header delimiter.
(if (and (re-search-forward "^Subject:\\([ \t]*\n\\)+" delimline t)
(= (match-end 0) delimline))
(replace-match "")))
;; Put the "From:" field in unless for some odd reason
;; they put one in themselves.
(goto-char (point-min))
(if (not (re-search-forward "^From:" delimline t))
(let* ((login smtpmail-mail-address)
(fullname (user-full-name)))
(cond ((eq mail-from-style 'angles)
(insert "From: " fullname)
(let ((fullname-start (+ (point-min) 6))
(fullname-end (point-marker)))
(goto-char fullname-start)
;; Look for a character that cannot appear unquoted
;; according to RFC 822.
(if (re-search-forward "[^- !#-'*+/-9=?A-Z^-~]"
fullname-end 1)
(progn
;; Quote fullname, escaping specials.
(goto-char fullname-start)
(insert "\"")
(while (re-search-forward "[\"\\]"
fullname-end 1)
(replace-match "\\\\\\&" t))
(insert "\""))))
(insert " <" login ">\n"))
((eq mail-from-style 'parens)
(insert "From: " login " (")
(let ((fullname-start (point)))
(insert fullname)
(let ((fullname-end (point-marker)))
(goto-char fullname-start)
;; RFC 822 says \ and nonmatching parentheses
;; must be escaped in comments.
;; Escape every instance of ()\ ...
(while (re-search-forward "[()\\]" fullname-end 1)
(replace-match "\\\\\\&" t))
;; ... then undo escaping of matching parentheses,
;; including matching nested parentheses.
(goto-char fullname-start)
(while (re-search-forward
"\\(\\=\\|[^\\]\\(\\\\\\\\\\)*\\)\\\\(\\(\\([^\\]\\|\\\\\\\\\\)*\\)\\\\)"
fullname-end 1)
(replace-match "\\1(\\3)" t)
(goto-char fullname-start))))
(insert ")\n"))
((null mail-from-style)
(insert "From: " login "\n")))))
;; Insert a `Message-Id:' field if there isn't one yet.
(goto-char (point-min))
(unless (re-search-forward "^Message-Id:" delimline t)
(insert "Message-Id: " (message-make-message-id) "\n"))
;; Insert a `Date:' field if there isn't one yet.
(goto-char (point-min))
(unless (re-search-forward "^Date:" delimline t)
(insert "Date: " (message-make-date) "\n"))
;; Insert an extra newline if we need it to work around
;; Sun's bug that swallows newlines.
(goto-char (1+ delimline))
(if (eval mail-mailer-swallows-blank-line)
(newline))
;; Find and handle any FCC fields.
(goto-char (point-min))
(if (re-search-forward "^FCC:" delimline t)
(mail-do-fcc delimline))
(if mail-interactive
(with-current-buffer errbuf
(erase-buffer))))
;;
;;
;;
(setq smtpmail-address-buffer (generate-new-buffer "*smtp-mail*"))
(setq smtpmail-recipient-address-list
(smtpmail-deduce-address-list tembuf (point-min) delimline))
(kill-buffer smtpmail-address-buffer)

(smtpmail-do-bcc delimline)
; Send or queue
(if (not smtpmail-queue-mail)
(if (not (null smtpmail-recipient-address-list))
(if (not (smtpmail-via-smtp
smtpmail-recipient-address-list tembuf))
(error "Sending failed; SMTP protocol error"))
(error "Sending failed; no recipients"))
(let* ((file-data (concat
smtpmail-queue-dir
(concat (time-stamp-yyyy-mm-dd)
"_" (time-stamp-hh:mm:ss)
"_"
(setq smtpmail-queue-counter
(1+ smtpmail-queue-counter)))))
(file-elisp (concat file-data ".el"))
(buffer-data (create-file-buffer file-data))
(buffer-elisp (create-file-buffer file-elisp))
(buffer-scratch "*queue-mail*"))
(with-current-buffer buffer-data
(erase-buffer)
(insert-buffer tembuf)
(write-file file-data)
(set-buffer buffer-elisp)
(erase-buffer)
(insert (concat
"(setq smtpmail-recipient-address-list '"
(prin1-to-string smtpmail-recipient-address-list)
")\n"))
(write-file file-elisp)
(set-buffer (generate-new-buffer buffer-scratch))
(insert (concat file-data "\n"))
(append-to-file (point-min)
(point-max)
smtpmail-queue-index)
)
(kill-buffer buffer-scratch)
(kill-buffer buffer-data)
(kill-buffer buffer-elisp))))
(kill-buffer tembuf)
(if (bufferp errbuf)
(kill-buffer errbuf)))))

(defun smtpmail-send-queued-mail ()
"Send mail that was queued as a result of setting `smtpmail-queue-mail'."
(interactive)
(with-temp-buffer
;;; Get index, get first mail, send it, update index, get second
;;; mail, send it, etc...
(let ((file-msg ""))
(insert-file-contents smtpmail-queue-index)
(beginning-of-buffer)
(while (not (eobp))
(setq file-msg (buffer-substring (point) (line-end-position)))
(load file-msg)
;; Insert the message literally: it is already encoded as per
;; the MIME headers, and code conversions might guess the
;; encoding wrongly.
(with-temp-buffer
(let ((coding-system-for-read 'no-conversion))
(insert-file-contents file-msg))
(if (not (null smtpmail-recipient-address-list))
(if (not (smtpmail-via-smtp smtpmail-recipient-address-list
(current-buffer)))
(error "Sending failed; SMTP protocol error"))
(error "Sending failed; no recipients")))
(delete-file file-msg)
(delete-file (concat file-msg ".el"))
(kill-line 1))
(write-region (point-min) (point-max) smtpmail-queue-index))))

;(defun smtpmail-via-smtp (host,port,sender,destination,smtpmail-text-buffer)

(defun smtpmail-fqdn ()
(if smtpmail-local-domain
(concat (system-name) "." smtpmail-local-domain)
(system-name)))

(defsubst smtpmail-cred-server (cred)
(nth 0 cred))

(defsubst smtpmail-cred-port (cred)
(nth 1 cred))

(defsubst smtpmail-cred-key (cred)
(nth 2 cred))

(defsubst smtpmail-cred-user (cred)
(nth 2 cred))

(defsubst smtpmail-cred-cert (cred)
(nth 3 cred))

(defsubst smtpmail-cred-passwd (cred)
(nth 3 cred))

(defun smtpmail-find-credentials (cred server port)
(catch 'done
(let ((l cred) el)
(while (setq el (pop l))
(when (and (equal server (smtpmail-cred-server el))
(equal port (smtpmail-cred-port el)))
(throw 'done el))))))

(defun smtpmail-maybe-append-domain (recipient)
(if (or (not smtpmail-sendto-domain)
(string-match "@" recipient))
recipient
(concat recipient "@" smtpmail-sendto-domain)))

(defun smtpmail-intersection (list1 list2)
(let ((result nil))
(dolist (el2 list2)
(when (memq el2 list1)
(push el2 result)))
(nreverse result)))

(defun smtpmail-open-stream (process-buffer host port)
(let ((cred (smtpmail-find-credentials
smtpmail-starttls-credentials host port)))
(if (null (and cred (condition-case ()
(call-process "starttls")
(error nil))))
;; The normal case.
(open-network-stream "SMTP" process-buffer host port)
(let* ((cred-key (smtpmail-cred-key cred))
(cred-cert (smtpmail-cred-cert cred))
(starttls-extra-args
(when (and (stringp cred-key) (stringp cred-cert)
(file-regular-p
(setq cred-key (expand-file-name cred-key)))
(file-regular-p
(setq cred-cert (expand-file-name cred-cert))))
(list "--key-file" cred-key "--cert-file" cred-cert))))
(starttls-open-stream "SMTP" process-buffer host port)))))

(defun smtpmail-try-auth-methods (process supported-extensions host port)
(let* ((mechs (cdr-safe (assoc 'auth supported-extensions)))

(mech (car (smtpmail-intersection mechs smtpmail-auth-supported)))
(cred (if (stringp smtpmail-auth-credentials)
(let* ((netrc (netrc-parse smtpmail-auth-credentials))
(hostentry (netrc-machine

netrc host (format "%s" (or port "smtp"))
"smtp")))
(when hostentry
(list host port
(netrc-get hostentry "login")
(netrc-get hostentry "password"))))
(smtpmail-find-credentials
smtpmail-auth-credentials host port)))
(passwd (when cred
(or (smtpmail-cred-passwd cred)
(read-passwd
(format "SMTP password for %s:%s: "
(smtpmail-cred-server cred)
(smtpmail-cred-port cred))))))
ret)
(when cred
(cond
((eq mech 'cram-md5)
(smtpmail-send-command process (format "AUTH %s" mech))
(if (or (null (car (setq ret (smtpmail-read-response process))))
(not (integerp (car ret)))
(>= (car ret) 400))
(throw 'done nil))
(when (eq (car ret) 334)
(let* ((challenge (substring (cadr ret) 4))
(decoded (base64-decode-string challenge))
(hash (rfc2104-hash 'md5 64 16 passwd decoded))
(response (concat (smtpmail-cred-user cred) " " hash))
(encoded (base64-encode-string response)))
(smtpmail-send-command process (format "%s" encoded))
(if (or (null (car (setq ret (smtpmail-read-response process))))
(not (integerp (car ret)))
(>= (car ret) 400))
(throw 'done nil)))))
((eq mech 'login)
(smtpmail-send-command process "AUTH LOGIN")
(if (or (null (car (setq ret (smtpmail-read-response process))))
(not (integerp (car ret)))
(>= (car ret) 400))
(throw 'done nil))
(smtpmail-send-command
process (base64-encode-string (smtpmail-cred-user cred)))
(if (or (null (car (setq ret (smtpmail-read-response process))))
(not (integerp (car ret)))
(>= (car ret) 400))
(throw 'done nil))
(smtpmail-send-command process (base64-encode-string passwd))
(if (or (null (car (setq ret (smtpmail-read-response process))))
(not (integerp (car ret)))
(>= (car ret) 400))
(throw 'done nil)))
(t
(error "Mechanism %s not implemented" mech)))
;; Remember the password.
(when (and (not (stringp smtpmail-auth-credentials))
(null (smtpmail-cred-passwd cred)))
(setcar (cdr (cdr (cdr cred))) passwd)))))

(defun smtpmail-via-smtp (recipient smtpmail-text-buffer)
(let ((process nil)
(host (or smtpmail-smtp-server
(error "`smtpmail-smtp-server' not defined")))
(port smtpmail-smtp-service)
response-code
greeting
process-buffer
(supported-extensions '()))
(unwind-protect
(catch 'done
;; get or create the trace buffer
(setq process-buffer
(get-buffer-create (format "*trace of SMTP session to %s*" host)))

;; clear the trace buffer of old output
(with-current-buffer process-buffer
(erase-buffer))

;; open the connection to the server
(setq process (smtpmail-open-stream process-buffer host port))
(and (null process) (throw 'done nil))

;; set the send-filter
(set-process-filter process 'smtpmail-process-filter)

(with-current-buffer process-buffer
(set-buffer-process-coding-system 'raw-text-unix 'raw-text-unix)
(make-local-variable 'smtpmail-read-point)
(setq smtpmail-read-point (point-min))


(if (or (null (car (setq greeting (smtpmail-read-response process))))
(not (integerp (car greeting)))
(>= (car greeting) 400))
(throw 'done nil)
)

(let ((do-ehlo t)
(do-starttls t))
(while do-ehlo
;; EHLO
(smtpmail-send-command process (format "EHLO %s" (smtpmail-fqdn)))

(if (or (null (car (setq response-code
(smtpmail-read-response process))))
(not (integerp (car response-code)))
(>= (car response-code) 400))
(progn
;; HELO
(smtpmail-send-command
process (format "HELO %s" (smtpmail-fqdn)))

(if (or (null (car (setq response-code
(smtpmail-read-response process))))
(not (integerp (car response-code)))
(>= (car response-code) 400))
(throw 'done nil)))
(dolist (line (cdr (cdr response-code)))
(let ((name (mapcar (lambda (s) (intern (downcase s)))
(split-string (substring line 4) "[ ]"))))
(and (eq (length name) 1)
(setq name (car name)))
(and name
(cond ((memq (if (consp name) (car name) name)
'(verb xvrb 8bitmime onex xone
expn size dsn etrn
enhancedstatuscodes
help xusr
auth=login auth starttls))
(setq supported-extensions
(cons name supported-extensions)))
(smtpmail-warn-about-unknown-extensions
(message "Unknown extension %s" name)))))))

(if (and do-starttls
(smtpmail-find-credentials smtpmail-starttls-credentials host port)
(member 'starttls supported-extensions)
(process-id process))
(progn
(smtpmail-send-command process (format "STARTTLS"))
(if (or (null (car (setq response-code (smtpmail-read-response process))))
(not (integerp (car response-code)))
(>= (car response-code) 400))
(throw 'done nil))
(starttls-negotiate process)
(setq do-starttls nil))
(setq do-ehlo nil))))

(smtpmail-try-auth-methods process supported-extensions host port)

(if (or (member 'onex supported-extensions)
(member 'xone supported-extensions))
(progn
(smtpmail-send-command process (format "ONEX"))
(if (or (null (car (setq response-code (smtpmail-read-response process))))
(not (integerp (car response-code)))
(>= (car response-code) 400))
(throw 'done nil))))

(if (and smtpmail-debug-verb
(or (member 'verb supported-extensions)
(member 'xvrb supported-extensions)))
(progn
(smtpmail-send-command process (format "VERB"))
(if (or (null (car (setq response-code (smtpmail-read-response process))))
(not (integerp (car response-code)))
(>= (car response-code) 400))
(throw 'done nil))))

(if (member 'xusr supported-extensions)
(progn
(smtpmail-send-command process (format "XUSR"))
(if (or (null (car (setq response-code (smtpmail-read-response process))))
(not (integerp (car response-code)))
(>= (car response-code) 400))
(throw 'done nil))))

;; MAIL FROM: <sender>
(let ((size-part
(if (or (member 'size supported-extensions)
(assoc 'size supported-extensions))
(format " SIZE=%d"
(with-current-buffer smtpmail-text-buffer
;; size estimate:
(+ (- (point-max) (point-min))
;; Add one byte for each change-of-line
;; because or CR-LF representation:
(count-lines (point-min) (point-max))
;; For some reason, an empty line is
;; added to the message. Maybe this
;; is a bug, but it can't hurt to add
;; those two bytes anyway:
2)))
""))
(body-part
(if (member '8bitmime supported-extensions)
;; FIXME:
;; Code should be added here that transforms
;; the contents of the message buffer into
;; something the receiving SMTP can handle.
;; For a receiver that supports 8BITMIME, this
;; may mean converting BINARY to BASE64, or
;; adding Content-Transfer-Encoding and the
;; other MIME headers. The code should also
;; return an indication of what encoding the
;; message buffer is now, i.e. ASCII or
;; 8BITMIME.
(if nil
" BODY=8BITMIME"
"")
"")))
; (smtpmail-send-command process (format "MAIL FROM:%s@%s" (user-login-name) (smtpmail-fqdn)))
(smtpmail-send-command process (format "MAIL FROM: <%s>%s%s"
(or mail-envelope-from
smtpmail-mail-address)
size-part
body-part))

(if (or (null (car (setq response-code (smtpmail-read-response process))))
(not (integerp (car response-code)))
(>= (car response-code) 400))
(throw 'done nil)
))

;; RCPT TO: <recipient>
(let ((n 0))
(while (not (null (nth n recipient)))
(smtpmail-send-command process (format "RCPT TO: <%s>" (smtpmail-maybe-append-domain (nth n recipient))))
(setq n (1+ n))

(setq response-code (smtpmail-read-response process))
(if (or (null (car response-code))
(not (integerp (car response-code)))
(>= (car response-code) 400))
(throw 'done nil)
)
))

;; DATA
(smtpmail-send-command process "DATA")

(if (or (null (car (setq response-code (smtpmail-read-response process))))
(not (integerp (car response-code)))
(>= (car response-code) 400))
(throw 'done nil)
)

;; Mail contents
(smtpmail-send-data process smtpmail-text-buffer)

;;DATA end "."
(smtpmail-send-command process ".")

(if (or (null (car (setq response-code (smtpmail-read-response process))))
(not (integerp (car response-code)))
(>= (car response-code) 400))
(throw 'done nil)
)

;;QUIT
; (smtpmail-send-command process "QUIT")
; (and (null (car (smtpmail-read-response process)))
; (throw 'done nil))
t ))
(if process
(with-current-buffer (process-buffer process)
(smtpmail-send-command process "QUIT")
(smtpmail-read-response process)

; (if (or (null (car (setq response-code (smtpmail-read-response process))))
; (not (integerp (car response-code)))
; (>= (car response-code) 400))
; (throw 'done nil)
; )
(delete-process process))))))


(defun smtpmail-process-filter (process output)
(with-current-buffer (process-buffer process)
(goto-char (point-max))
(insert output)))

(defun smtpmail-read-response (process)
(let ((case-fold-search nil)
(response-strings nil)
(response-continue t)
(return-value '(nil ()))
match-end)

(while response-continue
(goto-char smtpmail-read-point)
(while (not (search-forward "\r\n" nil t))
(accept-process-output process)
(goto-char smtpmail-read-point))

(setq match-end (point))
(setq response-strings
(cons (buffer-substring smtpmail-read-point (- match-end 2))
response-strings))

(goto-char smtpmail-read-point)
(if (looking-at "[0-9]+ ")
(let ((begin (match-beginning 0))
(end (match-end 0)))
(if smtpmail-debug-info
(message "%s" (car response-strings)))

(setq smtpmail-read-point match-end)

;; ignore lines that start with "0"
(if (looking-at "0[0-9]+ ")
nil
(setq response-continue nil)
(setq return-value
(cons (string-to-int
(buffer-substring begin end))
(nreverse response-strings)))))

(if (looking-at "[0-9]+-")
(progn (if smtpmail-debug-info
(message "%s" (car response-strings)))
(setq smtpmail-read-point match-end)
(setq response-continue t))
(progn
(setq smtpmail-read-point match-end)
(setq response-continue nil)
(setq return-value
(cons nil (nreverse response-strings)))
)
)))
(setq smtpmail-read-point match-end)
return-value))


(defun smtpmail-send-command (process command)
(goto-char (point-max))
(if (= (aref command 0) ?P)
(insert "PASS <omitted>\r\n")
(insert command "\r\n"))
(setq smtpmail-read-point (point))
(process-send-string process command)
(process-send-string process "\r\n"))

(defun smtpmail-send-data-1 (process data)
(goto-char (point-max))

(if (and (multibyte-string-p data)
smtpmail-code-conv-from)
(setq data (string-as-multibyte
(encode-coding-string data smtpmail-code-conv-from))))

(if smtpmail-debug-info
(insert data "\r\n"))

(setq smtpmail-read-point (point))
;; Escape "." at start of a line
(if (eq (string-to-char data) ?.)
(process-send-string process "."))
(process-send-string process data)
(process-send-string process "\r\n")
)

(defun smtpmail-send-data (process buffer)
(let
((data-continue t)
(sending-data nil)
this-line
this-line-end)

(with-current-buffer buffer
(goto-char (point-min)))

(while data-continue
(with-current-buffer buffer
(beginning-of-line)
(setq this-line (point))
(end-of-line)
(setq this-line-end (point))
(setq sending-data nil)
(setq sending-data (buffer-substring this-line this-line-end))
(if (/= (forward-line 1) 0)
(setq data-continue nil)))

(smtpmail-send-data-1 process sending-data)
)
)
)


(defun smtpmail-deduce-address-list (smtpmail-text-buffer header-start header-end)
"Get address list suitable for smtp RCPT TO: <address>."
(unwind-protect
(with-current-buffer smtpmail-address-buffer
(erase-buffer)
(let
((case-fold-search t)
(simple-address-list "")
this-line
this-line-end
addr-regexp)
(insert-buffer-substring smtpmail-text-buffer header-start header-end)
(goto-char (point-min))
;; RESENT-* fields should stop processing of regular fields.
(save-excursion
(setq addr-regexp
(if (re-search-forward "^Resent-\\(to\\|cc\\|bcc\\):"
header-end t)
"^Resent-\\(to\\|cc\\|bcc\\):"
"^\\(To:\\|Cc:\\|Bcc:\\)")))

(while (re-search-forward addr-regexp header-end t)
(replace-match "")
(setq this-line (match-beginning 0))
(forward-line 1)
;; get any continuation lines
(while (and (looking-at "^[ \t]+") (< (point) header-end))
(forward-line 1))
(setq this-line-end (point-marker))
(setq simple-address-list
(concat simple-address-list " "
(mail-strip-quoted-names (buffer-substring this-line this-line-end))))
)
(erase-buffer)
(insert " " simple-address-list "\n")
(subst-char-in-region (point-min) (point-max) 10 ? t);; newline --> blank
(subst-char-in-region (point-min) (point-max) ?, ? t);; comma --> blank
(subst-char-in-region (point-min) (point-max) 9 ? t);; tab --> blank

(goto-char (point-min))
;; tidyness in case hook is not robust when it looks at this
(while (re-search-forward "[ \t]+" header-end t) (replace-match " "))

(goto-char (point-min))
(let (recipient-address-list)
(while (re-search-forward " \\([^ ]+\\) " (point-max) t)
(backward-char 1)
(setq recipient-address-list (cons (buffer-substring (match-beginning 1) (match-end 1))
recipient-address-list))
)
(setq smtpmail-recipient-address-list recipient-address-list))

)
)
)
)


(defun smtpmail-do-bcc (header-end)
"Delete [Resent-]BCC: and their continuation lines from the header area.
There may be multiple BCC: lines, and each may have arbitrarily
many continuation lines."
(let ((case-fold-search t))
(save-excursion
(goto-char (point-min))
;; iterate over all BCC: lines
(while (re-search-forward "^\\(RESENT-\\)?BCC:" header-end t)
(delete-region (match-beginning 0)
(progn (forward-line 1) (point)))
;; get rid of any continuation lines
(while (and (looking-at "^[ \t].*\n") (< (point) header-end))
(replace-match ""))))))


(provide 'smtpmail)

;;; smtpmail.el ends here
== smtpmail.el ==


Thanks a lot, I hope we can get this to work.

Simon Josefsson

unread,
Aug 22, 2002, 7:14:15 PM8/22/02
to
Jordan Katz <ka...@underlevel.net> writes:

> No I didn't, I forgot hehe. But I removed smtpmail.elc, did M-x
> byte-compile-file etc. and still the same error: "Mechanism nil not
> implemented". Just incase there's no misunderstanding or the patch
> wasn't applied as expected, here's an exact copy of the smtpmail.el
> I'm using, located in /usr/lib and loaded using (load-file
> "/usr/lib/emacs/21.2/i386-debian-linux-gnu/smtpmail.el") from
> ~/.gnus..

Maybe then the message is really correct and the intersection between
the SASL mechanisms supported by the server and by smtpmail.el is
empty. Did you enable `smtpmail-debug-info'? If so, how do the
*trace of SMTP session to foobar* buffer look after you try to send
mail?

Jordan Katz

unread,
Aug 24, 2002, 5:14:15 AM8/24/02
to
Simon Josefsson <j...@extundo.com> writes:

I don't know why, but I get this message:

220-smtp6.mindspring.com ESMTP Exim 3.33 #1 Sat, 24 Aug 2002 16:06:02 -0400
220-NO UCE. EarthLink does not authorize the use of its computers or network
220 equipment to deliver, accept, transmit, or distribute unsolicited e-mail.
EHLO jkatz
250-smtp6.mindspring.com Hello user-1121r9f.dsl.mindspring.com [66.32.237.47]
250-SIZE 10485760
250-PIPELINING
250 HELP
QUIT
221 smtp6.mindspring.com closing connection

What does "220-NO UCE" mean? The thing is that I use underlevel.net
to get incoming mail, but in order to send out mail I have to use
mindspring/earthlink (that's my ISP). Considering that, are my
auth/server settings correct?

== from ~/.emacs ==
(....
'(smtpmail-default-smtp-server "mindspring.com")
'(smtpmail-smtp-server "mindspring.com")
'(smtpmail-auth-credentials (quote (("mindspring.com" 25 "orlycapu" nil))))
'(smtpmail-debug-info t)
'(message-send-mail-function (quote smtpmail-send-it))
'(smtpmail-sendto-domain ""))

Simon Josefsson

unread,
Aug 24, 2002, 4:37:35 PM8/24/02
to
Jordan Katz <ka...@underlevel.net> writes:

> 220-smtp6.mindspring.com ESMTP Exim 3.33 #1 Sat, 24 Aug 2002 16:06:02 -0400
> 220-NO UCE. EarthLink does not authorize the use of its computers or network
> 220 equipment to deliver, accept, transmit, or distribute unsolicited e-mail.
> EHLO jkatz
> 250-smtp6.mindspring.com Hello user-1121r9f.dsl.mindspring.com [66.32.237.47]
> 250-SIZE 10485760
> 250-PIPELINING
> 250 HELP
> QUIT
> 221 smtp6.mindspring.com closing connection

This server doesn't seem to offer any authentication mechanisms at
all. Maybe they are using POP-before-SMTP instead? Then you need to
set up Gnus to pop from the server before sending mail through it. I
think even the old non-standard LOGIN authentication should be
advertized in the 250 lines. Perhaps you can tcpdump when some other
client sends authenticated mail through that server?

> What does "220-NO UCE" mean? The thing is that I use underlevel.net
> to get incoming mail, but in order to send out mail I have to use
> mindspring/earthlink (that's my ISP).

220-NO UCE is just part of the greeting, I'm not sure there is any
standard interpretation of it.

> Considering that, are my auth/server settings correct?

Looks good, except for your password. :-)

Jordan Katz

unread,
Aug 25, 2002, 2:49:37 AM8/25/02
to
Simon Josefsson <j...@extundo.com> writes:

> Jordan Katz <ka...@underlevel.net> writes:
>
>> 220-smtp6.mindspring.com ESMTP Exim 3.33 #1 Sat, 24 Aug 2002 16:06:02 -0400
>> 220-NO UCE. EarthLink does not authorize the use of its computers or network
>> 220 equipment to deliver, accept, transmit, or distribute unsolicited e-mail.
>> EHLO jkatz
>> 250-smtp6.mindspring.com Hello user-1121r9f.dsl.mindspring.com [66.32.237.47]
>> 250-SIZE 10485760
>> 250-PIPELINING
>> 250 HELP
>> QUIT
>> 221 smtp6.mindspring.com closing connection
>
> This server doesn't seem to offer any authentication mechanisms at
> all. Maybe they are using POP-before-SMTP instead? Then you need to
> set up Gnus to pop from the server before sending mail through it. I
> think even the old non-standard LOGIN authentication should be
> advertized in the 250 lines. Perhaps you can tcpdump when some other
> client sends authenticated mail through that server?

I'm not sure I understand what you are saying here. I used smtpmail
to connect to this very same ISP only weeks ago and it worked fine.. I
would find it hard to believe their auth method changed, but if it
did, how would I set up Gnus to pop from the server before sending
mail through it? I do not have another client that can send mail
through this.. is there a specific client I should try?

>> What does "220-NO UCE" mean? The thing is that I use underlevel.net
>> to get incoming mail, but in order to send out mail I have to use
>> mindspring/earthlink (that's my ISP).
>
> 220-NO UCE is just part of the greeting, I'm not sure there is any
> standard interpretation of it.
>
>> Considering that, are my auth/server settings correct?
>
> Looks good, except for your password. :-)

What do you mean? I didn't post the password.. if you saw something
and thought it was my password then I misused the parameters because
that was my username :)

Jordan Katz

unread,
Aug 25, 2002, 2:50:23 AM8/25/02
to
Simon Josefsson <j...@extundo.com> writes:

> Jordan Katz <ka...@underlevel.net> writes:
>
>> 220-smtp6.mindspring.com ESMTP Exim 3.33 #1 Sat, 24 Aug 2002 16:06:02 -0400
>> 220-NO UCE. EarthLink does not authorize the use of its computers or network
>> 220 equipment to deliver, accept, transmit, or distribute unsolicited e-mail.
>> EHLO jkatz
>> 250-smtp6.mindspring.com Hello user-1121r9f.dsl.mindspring.com [66.32.237.47]
>> 250-SIZE 10485760
>> 250-PIPELINING
>> 250 HELP
>> QUIT
>> 221 smtp6.mindspring.com closing connection
>
> This server doesn't seem to offer any authentication mechanisms at
> all. Maybe they are using POP-before-SMTP instead? Then you need to
> set up Gnus to pop from the server before sending mail through it. I
> think even the old non-standard LOGIN authentication should be
> advertized in the 250 lines. Perhaps you can tcpdump when some other
> client sends authenticated mail through that server?

I'm not sure I understand what you are saying here. I used smtpmail


to connect to this very same ISP only weeks ago and it worked fine.. I
would find it hard to believe their auth method changed, but if it
did, how would I set up Gnus to pop from the server before sending
mail through it? I do not have another client that can send mail
through this.. is there a specific client I should try?

>> What does "220-NO UCE" mean? The thing is that I use underlevel.net


>> to get incoming mail, but in order to send out mail I have to use
>> mindspring/earthlink (that's my ISP).
>
> 220-NO UCE is just part of the greeting, I'm not sure there is any
> standard interpretation of it.
>
>> Considering that, are my auth/server settings correct?
>
> Looks good, except for your password. :-)

What do you mean? I didn't post the password.. if you saw something


and thought it was my password then I misused the parameters because
that was my username :)

Simon Josefsson

unread,
Aug 25, 2002, 2:59:05 PM8/25/02
to
Jordan Katz <ka...@underlevel.net> writes:

>> This server doesn't seem to offer any authentication mechanisms at
>> all. Maybe they are using POP-before-SMTP instead? Then you need to
>> set up Gnus to pop from the server before sending mail through it. I
>> think even the old non-standard LOGIN authentication should be
>> advertized in the 250 lines. Perhaps you can tcpdump when some other
>> client sends authenticated mail through that server?
>
> I'm not sure I understand what you are saying here. I used smtpmail
> to connect to this very same ISP only weeks ago and it worked fine.. I
> would find it hard to believe their auth method changed, but if it
> did, how would I set up Gnus to pop from the server before sending
> mail through it? I do not have another client that can send mail
> through this.. is there a specific client I should try?

Traditionally SMTP does not require authentication -- maybe everything
just works if you remove the authentication configuration from .emacs?

>>> Considering that, are my auth/server settings correct?
>>
>> Looks good, except for your password. :-)
>
> What do you mean? I didn't post the password.. if you saw something
> and thought it was my password then I misused the parameters because
> that was my username :)

OK. Then it looked all good, assuming your server really do require
authentication. But the SMTP log you posted indicated that the server
does not require any authentication at all, and in that case you
shouldn't configure smtpmail to authenticate you.

But the error message when this happens should be much better. I'll
work on it.

Jordan Katz

unread,
Aug 25, 2002, 8:06:29 AM8/25/02
to
Simon Josefsson <j...@extundo.com> writes:

> Jordan Katz <ka...@underlevel.net> writes:
>
>>> This server doesn't seem to offer any authentication mechanisms at
>>> all. Maybe they are using POP-before-SMTP instead? Then you need to
>>> set up Gnus to pop from the server before sending mail through it. I
>>> think even the old non-standard LOGIN authentication should be
>>> advertized in the 250 lines. Perhaps you can tcpdump when some other
>>> client sends authenticated mail through that server?
>>
>> I'm not sure I understand what you are saying here. I used smtpmail
>> to connect to this very same ISP only weeks ago and it worked fine.. I
>> would find it hard to believe their auth method changed, but if it
>> did, how would I set up Gnus to pop from the server before sending
>> mail through it? I do not have another client that can send mail
>> through this.. is there a specific client I should try?
>
> Traditionally SMTP does not require authentication -- maybe everything
> just works if you remove the authentication configuration from .emacs?

If I remove the auth stuff, the message is sent (although the stuff in
the modeline flashes quickly so I doubt the smtpmail is even invoked)
and then it's instantly returned with the same ol'
unrouteable/traceable host error. What should I do then?

>>>> Considering that, are my auth/server settings correct?
>>>
>>> Looks good, except for your password. :-)
>>
>> What do you mean? I didn't post the password.. if you saw something
>> and thought it was my password then I misused the parameters because
>> that was my username :)
>
> OK. Then it looked all good, assuming your server really do require
> authentication. But the SMTP log you posted indicated that the server
> does not require any authentication at all, and in that case you
> shouldn't configure smtpmail to authenticate you.
>
> But the error message when this happens should be much better. I'll
> work on it.

Thanks,

Jordan Katz

unread,
Aug 25, 2002, 8:09:14 AM8/25/02
to
Jordan Katz <ka...@underlevel.net> writes:

I got it to work, finally! As you suggested, I removed the auth
stuff, but I forgot to include the line:

'(message-send-mail-function (quote smtpmail-send-it))

Once I did that, everything worked. Thanks for your help and for
being so patient. I'll be happy to test out stuff for you in the
future.

0 new messages