On 2006-08-25 18:40, eoghan <[EMAIL PROTECTED]> wrote:
>On 25 Aug 2006, at 18:35, Giorgos Keramidas wrote:
>>On 2006-08-25 16:00, eoghan <[EMAIL PROTECTED]> wrote:
>>> Hello
>>> Im using sylpheed for my mail (its work mail). Having some issues
>>> sending from their smtp server to non-work accounts.
>>>
>>> I have sendmail installed but I have never used it before and am
>>> wondering if I can use this through my local machine to send my
>>> mail?
>>
>> Yes, of course :-)
>>
>> This is what I usually do.
>
> Heh, thanks. I guess youre saying I should have said: how would i go
> about doing this...

If someone was to re-write a step by step guide for Sendmail on FreeBSD,
it would take far more than a single email response.

You should definitely start by reading, at least, the following:

http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/mail.html
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/sendmail.html

For available configuration options and the functionality they
implement, you can also look at: /usr/share/sendmail/cf/README

The Sendmail FAQ is also a valuable resource, and it is available online
at: http://www.sendmail.org/faq/index.html

In general, what you have as a goal is something that works like this:

                          work
    +--------------+      related            +------------------+
    |              |      messages           |                  |
    |   Sendmail   |  ====================>  |  Company's Mail  |
    |              |                         |     Gateway      |
    |   Running    |                         |                  |
    |     as       |                         +------------------+
    |   a local    |
    |     MTA      |
    |              |  ==========.
    |              |            | other      +------------------+
    +--------------+            | messages   |                  |
                                |            |   Mail Gateway   |
                                `=========>  |     of your      |
                                             |     Internet     |
                                             |     Provider     |
                                             |                  |
                                             +------------------+

This is very easy to do in FreeBSD.  You just have to run `make' once in
the `/etc/mail' directory.  This will create two files, called:

    HOSTNAME.mc
    HOSTNAME.submit.mc

where `HOSTNAME' is your local host name.  You can configure Sendmail,
by following the instructions in the Handbook, the help in the README
file of the Sendmail macros, at `/usr/share/sendmail/cf/README', and
making configuration changes to `HOSTNAME.mc'.

You can direct all outgoing email from `localhost' to the mail gateway
of your ISP, by reading the comments in `/etc/mail/HOSTNAME.mc' and
enabling the `SMART_HOST' feature.

Extra bonus points, if you don't want company email to pass through the
MTA of your ISP, if you set up a `mailertable' entry to direct all
company-related email to the mail gateway of your company, you can use
the `mailertable' feature.  Note that some ISPs do not allow outgoing
connections to port 25 of any random host, so this may not be always
possible though.

Attached below are two descriptions of the steps I took to set up
Sendmail, from two of my older posts to the list.  See if these are of
any help too.

The second one describes the configuration I use on my workstation at
work, to do something similar to the "two-way output" (work email to the
email gateway of work, all the rest to the default mail gateway) which
is shown in the ASCII-diagram above.

==============================================================================

Date: Fri, 26 Mar 2004 07:34:45 +0200
From: Giorgos Keramidas <[EMAIL PROTECTED]>
To: David Bear
Cc: freebsd-questions@freebsd.org
Subject: Re: sendmail local mta mode only
Message-ID: <[EMAIL PROTECTED]>
References: <[EMAIL PROTECTED]>

On 2004-03-25 19:24, David Bear <[EMAIL PROTECTED]> wrote:
> Not sure how to phrase this to limit the number of google hits ..
>
> I would like to run the stock sendmail freebsd has as a local MTA
> only... ie I don't want to listening on ANY real/public interface for
> mail.  I do want it to handle delivery of local messages to local
> accounts -- and handle sending messages destined for external systems.

I think that what you need is something similar to my setup at home,
where sendmail doesn't listen on any public interfaces:

    $ sockstat | { read head ; echo "$head"; grep :25; }
    USER     COMMAND    PID   FD PROTO  LOCAL ADDRESS         FOREIGN ADDRESS
    root     sendmail   458   4  tcp4   127.0.0.1:25          *:*

Delivery of local messages is handled nicely by the "submit" daemon
that I run, and mail submitted by local programs into the clientmqueue
is pushed along by an msp_queue daemon:

    $ ps xa | grep -v grep | grep sendmail
      458  ??  Ss     0:01.17 sendmail: accepting connections (sendmail)
      461  ??  Is     0:00.09 sendmail: Queue [EMAIL PROTECTED]:10:00 for 
/var/spool/clientmqueue (sendmail)

To set things up like this, I have the following settings in my
/etc/rc.conf file:

    # Do not run the sendmail inbound daemon to listen on any interfaces.
    sendmail_enable="NO"
    # Start a localhost-only MTA for mail submission.
    sendmail_submit_enable="YES"
    sendmail_submit_flags="-L smtpd -bd -q30m 
-ODaemonPortOptions=Addr=localhost"
    # Dequeue stuck clientmqueue mail every 30 minutes.
    sendmail_msp_queue_enable="YES"
    sendmail_msp_queue_flags="-L mailq -Ac -q30m"

There are also the following configuration files for Sendmail in my
/etc/mail directory:

    -rw-r--r--  1 root  wheel   1612 Jan  7 01:41 gothmog.mc
    -rw-r--r--  1 root  wheel    849 Apr 11  2003 gothmog.submit.mc

The hostname is "gothmog.gr", which means that the Makefile in
/etc/mail will automagically look for exactly these two names when
trying to build the sendmail.cf and submit.cf configuration files,
after root runs:

    # cd /etc/mail
    # make
    # make install

The contents of these two files have been copied from freebsd.mc and
freebsd.submit.mc, respectively.  The modifications that are required
to make them "just work" are very minimal -- most of the time, all you
need is to add *one* line to freebsd.mc stating your ISP's outgoing
mail gateway, i.e. something similar to:

    define(`SMART_HOST', `mail.example.net')

and you're set to go.

--- IMPORTANT NOTE ---
Before making any modifications to freebsd.mc and freebsd.submit.mc,
you should probably copy them to their local equivalents, since the
'freebsd*.mc' files are overwritten every time you update your FreeBSD
system to a newer version.

Summing it all up, the installation & configuration process of
Sendmail for your type of setup should include the following steps:

    1.  As root, working in /etc/mail, copy the files freebsd.mc and
freebsd.submit.mc to `hostname`.mc and `hostname`.submit.mc,
respectively,  replacing `hostname` with your local host name.

    2.  If you are supposed to use an outgoing mail gateway (i.e. your
ISP's mail gateway) edit `hostname`.mc and add the line:

        define(`SMART_HOST', `mail.example.net')

    3.  While still working in /etc/mail, update sendmail.cf and
submit.cf, from your new .mc files:

        # make
        # make install

    4.  Edit your /etc/rc.conf file:

        a.  Comment out or remove all instances of sendmail_xxx
options you might have there.  My suggestion is to either comment them
out or make a backup copy of the entire file, before making any
modifications.  This way you can quickly revert any changes you make,
if you happen to find out they don't suit your needs.

        b.  Add the following lines (short descriptions can be found
in the file /etc/defaults/rc.conf and more detailed explanations of
what they do is included in the rc.conf(5) manpage):

           sendmail_enable="NO"
           sendmail_submit_enable="YES"
           sendmail_submit_flags="-L smtpd -bd -q30m 
-ODaemonPortOptions=Addr=localhost"
           sendmail_msp_queue_enable="YES"
           sendmail_msp_queue_flags="-L mailq -Ac -q30m"

    5.  Restart Sendmail, running as root in /etc/mail:

        # make restart

        While running this last step, you might want to keep a window
open with a `tail -f' command running on /var/log/maillog, watching
for reports of any unexpected errors or failures.  If all is fine, you
should see something like this fly by:

Mar 26 07:22:06 gothmog smtpd[458]: restarting /usr/sbin/sendmail due to signal
Mar 26 07:22:06 gothmog mailq[461]: restarting /usr/sbin/sendmail due to signal
Mar 26 07:22:06 gothmog smtpd[3892]: starting daemon (8.X.Y): [EMAIL 
PROTECTED]:30:00
Mar 26 07:22:06 gothmog mailq[3895]: starting daemon (8.X.Y): [EMAIL 
PROTECTED]:30:00

- Giorgos

==============================================================================

Date: Sat, 4 Sep 2004 04:11:19 +0300
From: Giorgos Keramidas <[EMAIL PROTECTED]>
To: chip
Cc: freebsd-questions@freebsd.org
Subject: Re: sendmail setup
Message-ID: <[EMAIL PROTECTED]>
References: <[EMAIL PROTECTED]>

On 2004-09-03 16:57, [EMAIL PROTECTED] wrote:
> Could someone please just explain what is needed to make it send mail
> out to the world from just one machine on the lan. It can't be as hard
> as it appears to be.

The setup of my workstation at work to forward outgoing email to the
mail gateway available to all the machines of the internal network is
the following:


Sendmail options in rc.conf
===========================

The following options are in my `/etc/rc.conf' file:

    % grep sendmail /etc/rc.conf
    sendmail_enable="NO"
    sendmail_outbound_enable="NO"
    sendmail_submit_enable="YES"
    sendmail_submit_flags="-L sm-mta -bd -q5m 
-ODaemonPortOptions=Addr=localhost"
    sendmail_msp_queue_enable="YES"
    sendmail_msp_queue_flags="-L sm-msp -Ac -q30m"
    %

The two enabled sendmail processes have the following function:

    submit
        This listens on 127.0.0.1:25 and allows local processes (including
        the msp_queue process) to post messages.  It uses sendmail.cf as
        its configuration file and can forward all your outgoing messages
        to the mail gateway of your LAN (see the SMART_HOST option below).

    msp_queue
        This sendmail process scans periodically the messages in the queue
        /var/spool/clientmqueue and makes sure they don't get stuck there.


The genericstable address rewriting rules
=========================================

The file /etc/mail/genericstable contains the following:

    % cat /etc/mail/genericstable
    [EMAIL PROTECTED]   [EMAIL PROTECTED]
    %

Thus, all messages posted by user `keramida' on my workstation will have
their address rewritten to [EMAIL PROTECTED], which is certainly
more useful to the rest of the world than my internal workstation address.


The mailertable message routing table
=====================================

I want all my company email routed through our VPN to the internal email
server, instead of travelling through the Internet to reach the same
server's external interface.  To accomplish this I use a mailertable with
the following entries:

    % cat /etc/mail/mailertable
    .company.com                        smtp:internal-mx.company.com
    company.com                         smtp:internal-mx.company.com
    %

Custom envelope from addresses
==============================

Some times I run scripts under my uid that want to "fake" their envelope
from address.  Thus, I have created a file called /etc/mail/trusted-users
with a list of usernames that are allowed to set their envelope from
address with sendmail -f [EMAIL PROTECTED] without having a warning added
automagically by Sendmail in their header:

    % cat /etc/mail/trusted-users
    keramida
    %


The local hostnames
===================

The file local-host-names as you already mentioned contains the list of
hostnames that my workstation should consider `local' and attempt to
deliver to a local user:

    % cat /etc/mail/local-host-names
    internal-host.internal.domain
    internal-host
    %

I've added both the `internal-host' and `internal-host.internal.domain'
names, in case some locally running program tries to send mail using only
the hostname and not the fully qualified domain name of the workstation in
the local LAN.


The hostname.mc file
====================

The Makefile in /etc/mail will look for a file called `hostname.mc' where
hostname is the short host name of your machine and use that as the source
for generating `sendmail.cf'.  If this file does not exist `freebsd.mc' is
copied to `hostname.mc' and the rest of the Makefile works as before.

The differences of my hostname.mc file from the freebsd.mc installed by
FreeBSD 6.0-CURRENT are:

    +FEATURE(genericstable, `hash -o /etc/mail/genericstable')
    -dnl define(`SMART_HOST', `your.isp.mail.server')
    +define(`SMART_HOST', `smtp.internal.domain')
    +FEATURE(masquerade_entire_domain)
    +FEATURE(masquerade_envelope)
    +MASQUERADE_AS(`company.com')
    +MASQUERADE_DOMAIN(`internal.domain')
    +FEATURE(use_cw_file)
     define(`confCW_FILE', `-o /etc/mail/local-host-names')
    +FEATURE(use_ct_file)
    +define(`confCT_FILE', `-o /etc/mail/trusted-users')
    -DAEMON_OPTIONS(`Name=IPv6, Family=inet6, Modifiers=O')

After what I wrote above the changes and their reasoning should be easy to
understand, except these few lines:

    +FEATURE(masquerade_entire_domain)
    +FEATURE(masquerade_envelope)
    +MASQUERADE_AS(`company.com')
    +MASQUERADE_DOMAIN(`internal.domain')

    -DAEMON_OPTIONS(`Name=IPv6, Family=inet6, Modifiers=O')

The first one is to make sure that all email sent from my workstation (or
forwarded from my workstation, in case I enable an internal SMTP server
later) will use @company.com addresses.

The second one is because I've removed IPv6 support from my kernel and I
don't like having Sendmail bother me about failed IPv6 connection attempts.


The Final Steps
===============

*   Make sure you don't have different map types defined in your
    hostname.mc and in the Makefile of `/etc/mail' (i.e. a hardwired map
    type of `btree' in hostname.mc for the access.db table and a default
    map type of `hash' in Makefile).

*   Update the generated files of /etc/mail:

        # cd /etc/mail
        # make && make install && make restart

*   That's all.


==============================================================================
_______________________________________________
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to