Deleting SMTP Servers from Mail.app in Mac OS X? 69
jesse12345 asks: "Here's probably an easy one for you Unix masters. I travel a fair amount and use Mail in OS X. I'm always using lots of outgoing mail servers. What I can't figure out is how to delete outdated ones. There seems to be no GUI for this within the Mail.app. Is there some way to do this in UNIX?"
Easy to do in Panther (Score:5, Informative)
There's an AppleScript for it (Score:5, Informative)
Seemed to work for me OK.
Howto: (Score:4, Informative)
Try the "Remove Server" button (Score:1, Informative)
yes (Score:3, Informative)
~/Library/Preferences/com.apple.mail.plist
In this file, there is a key labeled "DeliveryAccounts". This is where all your SMTP account information is kept. You should be able to edit/delete any account from there.
There is a means of doing this through AppleScript as well, but I don't remember how that works, so I'll have to leave that as an exercise for the reader.
Yeah (Score:2, Informative)
Fortunately, Panther seems to have fixed this - in account prefs, the SMTP server dropdown has added a "Edit Servers" Option. If you're still in Jaguar, however, I believe you can kill servers by editing ~/Library/Preferences/com.apple.mail.plist. I managed this once in Jaguar, but I'm too lazy to try to figure out which entries to trash now. I'm pretty sure it's in there somewhere, though.
Re:yes (Score:3, Informative)
Re:Wow (Score:2, Informative)
http://email.about.com/cs/macosxmailtips/a/et0127
since when is slashdot "I'm too lazy to use GOOGLE" tech support. goddammit.
Re:Use Sendmail (Score:3, Informative)
Many ISP's (including Earthlink, which I use) block access to port 25 - meaning you can't send directly to a remote mail server. As a part of this, they tell you that all outbound mail must go through thair provided mail server.
This is an anti-spam procedure that works well. If all of their customers must send mail through a single server, that server can filter and block those customers that have abused their mail privileges. In other words, these blocks are (for the most part) a good thing.
But this doesn't rule out running your own internal mail server. You just have to configure it to relay all outbound mail (that is, everything leaving your LAN) through your ISP's mail server instead of sending directly to the recipient's server. I know that sendmail can be configured to do this (I've done this on my Linux PC in order to allow me to use /usr/ucb/mail.) I would assume that any other halfway decent mail server should be able to do the same thing.
Re:Easy to do in Panther (Score:2, Informative)
Software updates are tied to OS updates as far as the free digital lifestyle iApps are concerned.
As long as security updates are available to all OS's I don't think thats a problem.
Re:There's an AppleScript for it (Score:3, Informative)
Not possible in Panther (Score:3, Informative)
The easiest way to remove servers is to edit the Mail preferences file. Open ~/Library/Preferences/com.apple.mail.plist (either in Property List Editor--if you have the developer tools installed--or any text editor) and find the entry "Delivery Accounts". Delete any you don't want.
Re:There's an AppleScript for it (Score:1, Informative)
Re:speaking of mail.app.... (Score:3, Informative)
It's a pain in the neck, but works perfectly for me. This also works for adding self-signed certs and such.
Re:Easy to do in Panther (Score:5, Informative)
Manage SMTP Servers.scpt
(*
Manage SMTP Servers
Copyright (C) 2002 Apple Computer, Inc.
You may incorporate this Apple sample code into your program(s) without
restriction. This Apple sample code has been provided "AS IS" and the
responsibility for its operation is yours. You are not permitted to
redistribute this Apple sample code as "Apple sample code" after having
made changes. If you're going to redistribute the code, we require
that you make it clear that the code was descended from Apple sample
code, but that you've made changes.
*)
(*
This script goes through each smtp server, checks to see whether they are
being used by an account, then presents a list of 'orphaned' smtp servers,
which you can choose to delete if you wish.
*)
tell application "Mail" to set everySMTPServer to every smtp server
set nameOfEverySMTPServer to {}
repeat with eachSMTPServer in everySMTPServer
if (my isThisSMTPServerBeingUsed(eachSMTPServer)) then
-- Don't add to the list of smtp servers to potentially delete
-- if the server is actively being used by an account
else
set nameOfEverySMTPServer to nameOfEverySMTPServer & name of eachSMTPServer
end if
end repeat
if ((count of nameOfEverySMTPServer) is equal to 0) then
display dialog "All the SMTP servers you have defined are being used by active accounts."
else
set theServersToDelete to choose from list nameOfEverySMTPServer with prompt "Choose one or more SMTP servers to delete. None of these servers are currently being used by any of your email accounts." with multiple selections allowed
if theServersToDelete is not equal to false then
if ((count of theServersToDelete) is greater than 0) then
repeat with eachServer in theServersToDelete
repeat with eachSMTPServer in everySMTPServer
try
if (name of eachSMTPServer is equal to eachServer as string) then
tell application "Mail" to delete eachSMTPServer
end if
end try
end repeat
end repeat
display dialog "The selected servers have been deleted!"
end if
end if
end if
on isThisSMTPServerBeingUsed(theServer)
-- Run through each account and see if any of them
-- are using the given SMTP server
set theResult to false
tell application "Mail"
set everyAccount to every account
repeat with eachAccount in everyAccount
set nameOfSMTPServer to name of smtp server of eachAccount
try
if (nameOfSMTPServer is equal to name of theServer) then
set theResult to true
end if
end try
end repeat
end tell
return theResult
end isThisSMTPServerBeingUsed
The AppleScript is best, but in the shell: (Score:3, Informative)
~/Library/Preferences/com.apple.mail.plist
And take out the <dict> entries that matches the unused entries...
<PRE>
<key>DeliveryAccounts</key>
<array>
<dict>
<key>AccountType</key>
<string>SMTPAccount</string>
<key>Hostname</key>
<string>mail.tbs.co.za</string>
  ; <key>ShouldUseAuthentication</key>
  ; <string>NO</string>
</dict>
</array>
</PRE>
Applescript: the GUI way!!! (Score:4, Informative)
There you'll find "Manage SMTP Servers.scpt".
Double-click it and you'll get a nice little window with all SMTP servers you don't use and a button to delete them.
Cheers,