home | O'Reilly's CD bookshelfs | FreeBSD | Linux | Cisco | Cisco Exam  


Previous Section Next Section

U=

Run agent as user-id:group-id V8.7 and above

Prior to V8.7 the user and group identities under which sendmail ran were defined by an elaborate set of properties (described under the F=S delivery agent flag in F=S). Beginning with V8.7, sendmail now offers the U= delivery agent equate as the means to define those identities. If the U= delivery agent equate is specified, it sets the default user and group identities for the delivery agent and always overrides the values of the DefaultUser option (DefaultUser). If the F=S delivery agent flag is not set, any controlling user will override this U= delivery agent equate.

The form of the U= delivery agent equate looks like this:

U=user:group  

Here, user is the alphanumeric identity of a user on the local system. The user is looked up with the method defined by the MailboxDatabase option (MailboxDatabase).[20] If user is found, the numeric user-id returned becomes the value used. Otherwise, user, which must be fully numeric, becomes the value used.

[20] Prior to V8.12, the getpwent(3) routine was used to find the username in the passwd file.

The colon,[21] if present, is followed by the alphanumeric identity of a group on the local system. If group is found in the local group(5) file, the numeric group-id from that file is used. Otherwise, group, which must be fully numeric, becomes the value used. If the colon and group are missing and if user was found when looked up, the value is taken from the group-id returned by the lookup.

[21] A colon is used because the POSIX standard allows login names to contain a dot.

Some delivery agents provide mc macros with which to add a U= equate. For example, the following mc configuration lines add that default to the various cyrus delivery agents:

define(`CYRUS_MAILER_USER', `cyrus:nullmail') this must be
MAILER(`cyrus')                               before this

See the section describing a particular delivery agent to find an appropriate mc macro with which to redefine the U= for that delivery agent. See Table 20-1, in Section 20.4, for a guide to all delivery agents.

For some delivery agents, there are no mc configuration macros available to directly give a value to this U= equate. Instead, you can use a bit of sleight of hand to add a U= to a particular delivery agent:

define(`LOCAL_MAILER_PATH', `/usr/lib/mail.local, U=mail:mail') this must be
MAILER(`local')                                                 before this

The LOCAL_MAILER_PATH mc configuration macro (See this section) is usually used to define the path for the local delivery agent. Instead of using it for that reason, here we simply restate the path that appears in the current sendmail.cf file, and add the U= declaration to that path. As with all modifications of delivery agent equates, the modification must precede the MAILER declaration for the corresponding delivery agent.

    Previous Section Next Section