Maxamillion (talk | contribs) (→Owner) |
(Update TODO/Done) |
||
Line 12: | Line 12: | ||
== Current status == | == Current status == | ||
* Targeted release: [[Releases/13 | Fedora 13 ]] | * Targeted release: [[Releases/13 | Fedora 13 ]] | ||
* Last updated: | * Last updated: 12 April 2011 | ||
* Percentage of completion: | * Percentage of completion: 98% | ||
=== Done === | |||
* Patch {{package|cronie}} to redirect messages that would be sent to a MTA to syslog in the event a MTA is not present. | * Patch {{package|cronie}} to redirect messages that would be sent to a MTA to syslog in the event a MTA is not present. | ||
** Patch submitted in {{bz|548843}}, applied to cronie-1.4.4, currently in F13. | ** Patch submitted in {{bz|548843}}, applied to cronie-1.4.4, currently in F13. | ||
* Add sendmail to comps to ensure it is still installed by default, as expected | * Add sendmail to comps to ensure it is still installed by default, as expected | ||
** <code>sendmail</code> is listed in the <code>base</code> group. | ** <code>sendmail</code> is listed in the <code>base</code> group. | ||
** This is for compatibility purposes and | ** This is for compatibility purposes and may be removed in a future release | ||
* Remove cronie's hard requirement on <code>/usr/sbin/sendmail</code> | |||
=== To-do === | |||
* Patch the default configuration for logwatch to not send mail, but to send messages to stdout and then verify the patch to cronie is reporting logwatch messages to syslog accordingly. | |||
=== Extra credit === | |||
* Add comment to <code>/etc/sysconfig/crond</code> that shows how to use syslog instead of sendmail: | * Add comment to <code>/etc/sysconfig/crond</code> that shows how to use syslog instead of sendmail: | ||
# To send cron output to syslog instead of local mail, set CRONDARGS to: | # To send cron output to syslog instead of local mail, set CRONDARGS to: | ||
#CRONDARGS="-s -m off" | #CRONDARGS="-s -m off" | ||
* Verify there are no other packages that will require a patch to function without a MTA | * Verify there are no other packages that will require a patch to function without a MTA | ||
Line 72: | Line 73: | ||
# Edit <code>/etc/sysconfig/crond</code> and set <code>CRONDARGS="-s -m off"</code> | # Edit <code>/etc/sysconfig/crond</code> and set <code>CRONDARGS="-s -m off"</code> | ||
# <code>service crond restart</code> | # <code>service crond restart</code> | ||
# | # Remove sendmail (or whichever package is providing your <code>/usr/sbin/sendmail</code>) | ||
#* | #* e.g.: <code>yum remove $(rpm -qf /usr/sbin/sendmail)</code> | ||
# Verify that all output from cron jobs shows up in <code>/var/log/cron</code> | # Verify that all output from cron jobs shows up in <code>/var/log/cron</code> | ||
Line 82: | Line 83: | ||
== Dependencies == | == Dependencies == | ||
<!-- What other packages (RPMs) depend on this package? Are there changes outside the developers' control on which completion of this feature depends? In other words, completion of another feature owned by someone else and might cause you to not be able to finish on time or that you would need to coordinate? Other upstream projects like the kernel (if this is not a kernel feature)? --> | <!-- What other packages (RPMs) depend on this package? Are there changes outside the developers' control on which completion of this feature depends? In other words, completion of another feature owned by someone else and might cause you to not be able to finish on time or that you would need to coordinate? Other upstream projects like the kernel (if this is not a kernel feature)? --> | ||
* None | |||
== Contingency Plan == | == Contingency Plan == | ||
<!-- If you cannot complete your feature by the final development freeze, what is the backup plan? This might be as simple as "None necessary, revert to previous release behaviour." Or it might not. If you feature is not completed in time we want to assure others that other parts of Fedora will not be in jeopardy. --> | <!-- If you cannot complete your feature by the final development freeze, what is the backup plan? This might be as simple as "None necessary, revert to previous release behaviour." Or it might not. If you feature is not completed in time we want to assure others that other parts of Fedora will not be in jeopardy. --> | ||
* None needed | |||
== Documentation == | == Documentation == |
Latest revision as of 16:18, 12 April 2011
No MTA
Summary
Make the MTA (i.e. /usr/sbin/sendmail
) optional.
Owner
- Name: Adam Miller
- email: maxamillion [AT] fedoraproject.org
Current status
- Targeted release: Fedora 13
- Last updated: 12 April 2011
- Percentage of completion: 98%
Done
- Patch
cronie
to redirect messages that would be sent to a MTA to syslog in the event a MTA is not present.- Patch submitted in RHBZ #548843, applied to cronie-1.4.4, currently in F13.
- Add sendmail to comps to ensure it is still installed by default, as expected
sendmail
is listed in thebase
group.- This is for compatibility purposes and may be removed in a future release
- Remove cronie's hard requirement on
/usr/sbin/sendmail
To-do
- Patch the default configuration for logwatch to not send mail, but to send messages to stdout and then verify the patch to cronie is reporting logwatch messages to syslog accordingly.
Extra credit
- Add comment to
/etc/sysconfig/crond
that shows how to use syslog instead of sendmail:
# To send cron output to syslog instead of local mail, set CRONDARGS to: #CRONDARGS="-s -m off"
- Verify there are no other packages that will require a patch to function without a MTA
Detailed Description
The presence of a Mail Transfer Agent (MTA) like sendmail
has long been the de facto standard. But most systems that aren't mail servers do not specifically need to keep local mail queues or transfer mail to other systems. For the vast majority of users this is simply wasted resources and wasted disk space for the packages installed.
cron
is the only thing in a default Fedora install that still uses local mail to report its status. The cron
syslog facility exists for this purpose, and our current cron
setup already uses it[1] to log some messages[2] to /var/log/cron
.
This feature allows cron
to optionally use syslog instead of email to report job status, thus making the presence of an MTA completely optional.
Benefit to Fedora
One less required package in the critical path, and we clear the way for removing the MTA from the default install.
Scope
Packages that may require changes:
cronie
cronie
is the only package in a default Fedora install that requests the use of an MTA. If /usr/sbin/sendmail
is not present, it will simply stop sending mail. Therefore, if we modify cronie
to send job output to a log file, we can remove the requirement for an MTA with no loss of functionality.
Required changes:
- Modify
cronie
to send job output to thecron
syslog facility ifsendmail
is missing - Remove
Requires: /usr/sbin/sendmail
fromcronie
's spec file
crontabs
crontabs
need to be examined to be sure none of them depend on local mail being sent.
logwatch
logwatch
needs to be examine to see if it actually depends on cron sending email, and patched to use stdout/syslog if so.
How To Test
- Ensure you have
cronie-1.4.4-1.fc13
or higher installed. - Edit
/etc/sysconfig/crond
and setCRONDARGS="-s -m off"
service crond restart
- Remove sendmail (or whichever package is providing your
/usr/sbin/sendmail
)- e.g.:
yum remove $(rpm -qf /usr/sbin/sendmail)
- e.g.:
- Verify that all output from cron jobs shows up in
/var/log/cron
User Experience
Transparent to most users. System administrators or integrators who were relying on the implicit dependency on /usr/bin/sendmail
may need to update their kickstart files etc. to explicitly install their chosen MTA.
Dependencies
- None
Contingency Plan
- None needed
Documentation
- None
Release Notes
- None
References
- ↑
/usr/bin/run-parts
runs all the cron jobs in/etc/cron.{hourly,daily,weekly,monthly}
- see/etc/cron.d/0hourly
(which runs the jobs in/etc/cron.hourly
) and/etc/anacrontab
(which launches the daily/weekly/monthly jobs.) - ↑ In fact, our current setup does not log the output of cron jobs to
/var/log/cron
- this feature would fix that.
Comments and Discussion