X-Git-Url: http://www.privoxy.org/gitweb/?p=privoxy.git;a=blobdiff_plain;f=doc%2Fwebserver%2Fuser-manual%2Factions-file.html;h=ed6ffe402479d28e49c8d3f56b2b6feb3edffa9c;hp=1b4406b2389b16d50653dac6e47e64c61d3f7729;hb=66237b3fc4eb5187c29d7bc598a87676db5b780b;hpb=bae19e58effcafe0193c7ed8862373e1209690fd diff --git a/doc/webserver/user-manual/actions-file.html b/doc/webserver/user-manual/actions-file.html index 1b4406b2..ed6ffe40 100644 --- a/doc/webserver/user-manual/actions-file.html +++ b/doc/webserver/user-manual/actions-file.html @@ -7,7 +7,7 @@ NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"> +HREF="../p_doc.css">
match-all.action - is used to define which + "actions" relating to banner-blocking, images, pop-ups, + content modification, cookie handling etc should be applied by default. + It should be the first actions file loaded +
default.action - is the primary action file - that sets the initial values for all actions. It is intended to - provide a base level of functionality for - Privoxy's array of features. So it is - a set of broad rules that should work reasonably well as-is for most users. - This is the file that the developers are keeping updated, and making available to users. - The user's preferences as set in - defines many exceptions (both + positive and negative) from the default set of actions that's configured + in standard.action, - e.g. either Cautious (the default), - Medium, or Advanced (see - below). -
match-all.action. It is a set of rules that should + work reasonably well as-is for most users. This file is only supposed to + be edited by the developers. It should be the second actions file loaded. +user.action - is intended to be for local site - preferences and exceptions. As an example, if your ISP or your bank - has specific requirements, and need special handling, this kind of - thing should go here. This file will not be upgraded. -
standard.action - is used only by the web based editor - at http://config.privoxy.org/edit-actions-list?f=default, - to set various pre-defined sets of rules for the default actions section - in default.action. -
Edit Set to Advanced -
These have increasing levels of aggressiveness These have increasing levels of aggressiveness and have no - influence on your browsing unless you select them explicitly in the - editor. A default installation should be pre-set to - Cautious (versions prior to 3.0.5 were set to - Medium). New users should try this for a while before - adjusting the settings to more aggressive levels. The more aggressive - the settings, then the more likelihood there is of problems such as sites - not working as they should. -
. New users should try this for a while before + adjusting the settings to more aggressive levels. The more aggressive + the settings, then the more likelihood there is of problems such as sites + not working as they should. +The The Edit button allows you to turn each - action on/off individually for fine-tuning. The Cautious - button changes the actions list to low/safe settings which will activate - ad blocking and a minimal set of Privoxy's features, and subsequently - there will be less of a chance for accidental problems. The - Medium button sets the list to a medium level of - other features and a low level set of privacy features. The - Advanced button sets the list to a high level of - ad blocking and medium level of privacy. See the chart below. The latter - three buttons over-ride any changes via with the - Edit button. More fine-tuning can be done in the - lower sections of this internal page. -
It is not recommend to edit the standard.action file - itself. -
While the actions file editor allows to enable these settings in all + actions files, they are only supposed to be enabled in the first one + to make sure you don't unintentionally overrule earlier rules. +The default profiles, and their associated actions, as pre-defined in - The default profiles, and their associated actions, as pre-defined in + standard.actiondefault.action are: -
The list of actions files to be used are defined in the main configuration
file, and are processed in the order they are defined (e.g.
@@ -528,7 +501,7 @@ CLASS="SECT2"
> handle-as-image +blockblock{Banner ads.} }
# Block these as if they were images. Send no block page.
banners.example.com
@@ -741,44 +714,61 @@ CLASS="EMPHASIS"
> Generally, an URL pattern has the form
<domain>/<path>, where both the
+><domain><port>/<path>, where the
<domain> and , the <port>
+ and the <path> are
- optional. (This is why the special are optional. (This is why the special
+ / pattern matches all
- URLs). Note that the protocol portion of the URL pattern (e.g.
- pattern matches all URLs). Note that the protocol
+ portion of the URL pattern (e.g. http://) should ) should
+ not be included in
- the pattern. This is assumed already! The pattern matching syntax is different for the domain and path parts of
the URL. The domain part uses a simple globbing type matching technique,
- while the path part uses a more flexible
+ while the path part uses more flexible
"Regular
- Expressions (PCRE)" based syntax. The port part of a pattern is a decimal port number preceded by a colon
+ (:). If the domain part contains a numerical IPv6 address,
+ it has to be put into angle brackets
+ (<, >). Matches any URL pointing to TCP port 8000.
+ Matches any URL with the host address 2001:db8::1.
+ (Note that the real URL uses plain brackets, not angle brackets.)
+ matches any domain that ENDS in
- matches any domain with first-level domain .example.comcom
+ and second-level domain example.
+ For example www.example.com,
+ example.com and foo.bar.baz.example.com.
+ Note that it wouldn't match if the second-level domain was another-example.
Privoxy uses Perl compatible (PCRE)
+> uses "modern" POSIX 1003.2
"Regular
- Expression" based syntax
- (through the PCRE library) for
- matching the path portion (after the slash), and is thus more flexible. There is an Appendix with a brief quick-start into regular
- expressions, and full (very technical) documentation on PCRE regex syntax is available on-line
- at http://www.pcre.org/man.txt.
- You might also find the Perl man page on regular expressions (man perlre)
- useful, which is available on-line at http://perldoc.perl.org/perlre.html. Note that the path pattern is automatically left-anchored at the
Example: +block+handle-as-image
Headers added by this action are not modified by other actions.
+ Boolean. N/A
@@ -1981,18 +1985,18 @@ WIDTH="90%"
> Improve privacy by not forwarding the source of the request in the HTTP headers. Deletes the "X-Forwarded-For:" HTTP header from the client request,
+ or adds a new one.
+ Parameterized. "block" to delete the header. "add" to create the header (or append
+ the client's IP address to an already existing one).
+ It is safe and recommended to use block.
+ Forwarding the source address of the request may make
+ sense in some multi-user setups but is also a privacy risk.
+ If the request URL gets changed, Privoxy will detect that and use the new
+ one. This can be used to rewrite the request destination behind the client's
+ back, for example to specify a Tor exit relay for certain requests.
+ Please refer to the filter file chapter This action takes parameters similar to the
+> This action takes parameters similar to the
forward8.5.17. handle-as-empty-document8.5.18. handle-as-empty-document It is a good idea to only use a small negative value and let
@@ -4948,7 +5083,8 @@ CLASS="LITERAL"
HREF="actions-file.html#CRUNCH-IF-NONE-MATCH"
>crunch-if-none-match.
+>,
+ otherwise it's more or less pointless.
Improve privacy by not embedding the source of the request in the HTTP headers. Deletes any existing "X-Forwarded-for:" HTTP header from client requests,
- and prevents adding a new one.
- Boolean. N/A
- It is safe to leave this on.
- "conditional-forge" to forge the header if the host has changed. "block" to delete the header unconditionally. Always blocking the referrer, or using a custom one, can lead to
failures on servers that check the referrer before they answer any
- requests, in an attempt to prevent their valuable content from being
+ requests, in an attempt to prevent their content from being
embedded or linked to elsewhere.
Typical use: Conceal your type of browser and client operating system To protect against the MS buffer over-run in JPEG processing Protect against a known exploit
- Boolean. N/A
- See Microsoft Security Bulletin MS04-028. JPEG images are one of the most
- common image types found across the Internet. The exploit as described can
- allow execution of code on the target system, giving an attacker access
- to the system in question by merely planting an altered JPEG image, which
- would have no obvious indications of what lurks inside. This action
- prevents this exploit.
- Note that the described exploit is only one of many,
- using this action does not mean that you no longer
- have to patch the client.
- Eliminate those annoying pop-up windows (deprecated) While loading the document, replace JavaScript code that opens
- pop-up windows with (syntactically neutral) dummy code on the fly.
- Boolean. N/A
- This action is basically a built-in, hardwired special-purpose filter
- action, but there are important differences: For kill-popups,
- the document need not be buffered, so it can be incrementally rendered while
- downloading. But kill-popups doesn't catch as many pop-ups as
- filter{all-popups}
- does and is not as smart as filter{unsolicited-popups}
- is.
- Think of it as a fast and efficient replacement for a filter that you
- can use if you don't want any filtering at all. Note that it doesn't make
- sense to combine it with any filter action,
- since as soon as one filter applies,
- the whole document needs to be buffered anyway, which destroys the advantage of
- the kill-popups action over its filter equivalent.
- Killing all pop-ups unconditionally is problematic. Many shops and banks rely on
- pop-ups to display forms, shopping carts etc, and the filter{unsolicited-popups}
- does a better job of catching only the unwanted ones.
- If the only kind of pop-ups that you want to kill are exit consoles (those
- really nasty windows that appear when you close an other
- one), you might want to use
- filter{js-annoyances}
- instead.
- This action is most appropriate for browsers that don't have any controls
- for unwanted pop-ups. Not recommended for general usage.
- The CONNECT methods exists in HTTP to allow access to secure websites
@@ -5793,8 +5613,7 @@ CLASS="QUOTE"
> URLs) through proxies. It works very simply:
the proxy connects to the server on the specified port, and then
short-circuits its connections to the client and to the remote server.
- This can be a big security hole, since CONNECT-enabled proxies can be
- abused as TCP relays very easily.
+ This means CONNECT-enabled proxies can be used as TCP relays very easily.
Privoxy's
filters. By specifying an invalid port range you can disable HTTPS entirely.
- If you plan to disable SSL by default, consider enabling
- treat-forbidden-connects-like-blocks
- as well, to be able to quickly create exceptions.
When compiled with zlib support (available since 8.5.30. overwrite-last-modified8.5.28. overwrite-last-modifiedhided-if-modified-sincehide-if-modified-since
to further customize your random range.
@@ -6161,7 +5965,7 @@ CLASS="SECT3"
CLASS="SECT3"
>8.5.31. redirect8.5.29. redirect In case of problems with your redirects, or simply to watch
+ them working, enable debug 128.
+ Feed log analysis scripts with useless data.
- Sends a cookie with each request stating that you do not accept any copyright
- on cookies sent to you, and asking the site operator not to track you.
- Boolean. N/A
- The vanilla wafer is a (relatively) unique header and could conceivably be used to track you.
- This action is rarely used and not enabled in the default configuration.
- Send custom cookies or feed log analysis scripts with even more useless data.
- Sends a custom, user-defined cookie with each request.
- Multi-value. A string of the form "name=value".
- Being multi-valued, multiple instances of this action can apply to the same request,
- resulting in multiple cookies being sent.
- This action is rarely used and not enabled in the default configuration.
- Block forbidden connects with an easy to find error message. If this action is enabled, Privoxy no longer
- makes a difference between forbidden connects and ordinary blocks.
- Boolean N/A By default Privoxy answers
- forbidden "Connect" requests
- with a short error message inside the headers. If the browser doesn't display
- headers (most don't), you just see an empty page.
- With this action enabled, Privoxy displays
- the message that is used for ordinary blocks instead. If you decide
- to make an exception for the page in question, you can do so by
- following the "See why" link.
- For "Connect" requests the clients tell
- Privoxy which host they are interested
- in, but not which document they plan to get later. As a result, the
- "Go there anyway" wouldn't work and is therefore suppressed.
- Note that many of these actions have the potential to cause a page to
@@ -7324,7 +6878,7 @@ HREF="actions-file.html#CRUNCH-INCOMING-COOKIES"
HREF="actions-file.html#CRUNCH-OUTGOING-COOKIES"
>crunch-outgoing-cookies
- +block-as-image = +block +handle-as-image
+ +block-as-image = +block{Blocked image.} +handle-as-image
allow-all-cookies = -crunch-all-cookies -session-cookies-onlyhide-referrer -kill-popups -prevent-compression
@@ -7359,9 +6910,6 @@ HREF="actions-file.html#PREVENT-COMPRESSION"
shop = -crunch-all-cookies -filter{all-popups} -kill-popups
# Short names for other aliases, for really lazy people ;-)
@@ -7407,7 +6955,7 @@ CLASS="SCREEN"
# These shops require pop-ups:
#
- {-kill-popups -filter{all-popups} -filter{unsolicited-popups}}
+ {-filter{all-popups} -filter{unsolicited-popups}}
.dabs.com
.overclockers.co.uk. Now, let's look at an
example match-all.action, default.action
+ and user.action file and see how all these pieces come together: Remember all actions are disabled when matching starts,
+ so we have to explicitly enable the ones we want. While the match-all.action file only contains a
+ single section, it is probably the most important one. It has only one
+ pattern, "/", but this pattern
+ matches all URLs. Therefore, the set of
+ actions used in this "default" section will
+ be applied to all requests as a start. It can be partly or
+ wholly overridden by other actions files like default.action and
+ and user.action
- file and see how all these pieces come together: Every config file should start with a short comment stating its purpose: Then, since this is the The default behavior is now set. If you aren't a developer, there's no need for you to edit the
+ default.action file. It is maintained by
+ the Privoxy developers and if you disagree with some of the
+ sections, you should overrule them in your user.action. Understanding the default.action file, the
-first section is a special section for internal use that you needn't
-change or worry about: The first section in this file is a special section for internal use
+ that prevents older Privoxy versions from reading the file: After that comes the (optional) alias section. We'll use the example
-section from the above After that comes the (optional) alias section. We'll use the example
+ section from the above chapter on aliases,
-that also explains why and how aliases are used: Now come the regular sections, i.e. sets of actions, accompanied
- by URL patterns to which they apply. Remember all actions
- are disabled when matching starts, so we have to explicitly
- enable the ones we want. The first regular section is probably the most important. It has only
- one pattern, "/", but this pattern
- matches all URLs. Therefore, the
- set of actions used in this "default" section will
- be applied to all requests as a start. It can be partly or
- wholly overridden by later matches further down this file, or in user.action,
- but it will still be largely responsible for your overall browsing
- experience. Again, at the start of matching, all actions are disabled, so there is
- no real need to disable any actions here, but we will do that nonetheless,
- to have a complete listing for your reference. (Remember: a "+"
- preceding the action name enables the action, a "-" disables!).
- Also note how this long line has been made more readable by splitting it into
- multiple lines with line continuation. The default behavior is now set. Note that some actions, like not hiding
- the user agent, are part of a "general policy" that applies
- universally and won't get any exceptions defined later. Other choices,
- like not blocking (which is understandably the
- default!) need exceptions, i.e. we need to specify explicitly what we
- want to block in later sections. The first of our specialized sections is concerned with "fragile"fast-redirects
- action, which we enabled per default above, breaks some sites. So disable
- it for popular sites where we know it misbehaves: So far we are painting with a broad brush by setting general policies,
@@ -8449,7 +7768,7 @@ WIDTH="100%"
>no no yesyes
- 8.1. Finding the Right Mix
8.2. How to Edit
8.4.1. The Domain Pattern
8.4.2. The Path Pattern
{+block}
+>{+block{No nasty stuff for you.}}
# Block and replace with "blocked" page
.nasty-stuff.example.com
-{+block +handle-as-image}
+{+block{Doubleclick banners.} +handle-as-image}
# Block and replace with image
.ad.doubleclick.net
.ads.r.us/banners/
-{+block +handle-as-empty-document}
+{+block{Layered ads.} +handle-as-empty-document}
# Block and then ignore
- adserver.exampleclick.net/.*\.js$
8.5.3. change-x-forwarded-for
+ +change-x-forwarded-for{block}
8.5.3. client-header-filter8.5.4. client-header-filter
8.5.4. client-header-tagger8.5.5. client-header-tagger# Tag every request with the User-Agent header
{+client-header-tagger{user-agent}}
/
+
+# Tagging itself doesn't change the action
+# settings, sections with TAG patterns do:
+#
+# If it's a download agent, use a different forwarding proxy,
+# show the real User-Agent and make sure resume works.
+{+forward-override{forward-socks5 10.0.0.2:2222 .} \
+ -hide-if-modified-since \
+ -overwrite-last-modified \
+ -hide-user-agent \
+ -filter \
+ -deanimate-gifs \
+}
+TAG:^User-Agent: NetBSD-ftp/
+TAG:^User-Agent: Novell ZYPP Installer
+TAG:^User-Agent: RPM APT-HTTP/
+TAG:^User-Agent: fetch libfetch/
+TAG:^User-Agent: Ubuntu APT-HTTP/
+TAG:^User-Agent: MPlayer/
8.5.5. content-type-overwrite8.5.6. content-type-overwrite8.5.6. crunch-client-header8.5.7. crunch-client-header8.5.7. crunch-if-none-match8.5.8. crunch-if-none-match8.5.8. crunch-incoming-cookies8.5.9. crunch-incoming-cookies8.5.9. crunch-server-header8.5.10. crunch-server-header8.5.10. crunch-outgoing-cookies8.5.11. crunch-outgoing-cookies8.5.11. deanimate-gifs8.5.12. deanimate-gifs8.5.12. downgrade-http-version8.5.13. downgrade-http-version8.5.13. fast-redirects8.5.14. fast-redirects8.5.14. filter8.5.15. filter{+client-header-filter{hide-tor-exit-notation}}
-.exit/
+># Hide Tor exit notation in Host and Referer Headers
+{+client-header-filter{hide-tor-exit-notation}}
+/
+filter{js-annoyances} # Get rid of particularly annoying JavaScript abuse
+filter{js-annoyances} # Get rid of particularly annoying JavaScript abuse.+filter{js-events} # Kill all JS event bindings (Radically destructive! Only for extra nasty sites)
+filter{js-events} # Kill all JS event bindings and timers (Radically destructive! Only for extra nasty sites).+filter{html-annoyances} # Get rid of particularly annoying HTML abuse
+filter{html-annoyances} # Get rid of particularly annoying HTML abuse.+filter{content-cookies} # Kill cookies that come in the HTML or JS content
+filter{content-cookies} # Kill cookies that come in the HTML or JS content.+filter{refresh-tags} # Kill automatic refresh tags (for dial-on-demand setups)
+filter{refresh-tags} # Kill automatic refresh tags (for dial-on-demand setups).+filter{img-reorder} # Reorder attributes in <img> tags to make the banners-by-* filters more effective
+filter{img-reorder} # Reorder attributes in <img> tags to make the banners-by-* filters more effective.+filter{banners-by-size} # Kill banners by size
+filter{banners-by-size} # Kill banners by size.+filter{banners-by-link} # Kill banners by their links to known clicktrackers
+filter{banners-by-link} # Kill banners by their links to known clicktrackers.+filter{webbugs} # Squish WebBugs (1x1 invisible GIFs used for user tracking)
+filter{webbugs} # Squish WebBugs (1x1 invisible GIFs used for user tracking).+filter{tiny-textforms} # Extend those tiny textareas up to 40x80 and kill the hard wrap
+filter{tiny-textforms} # Extend those tiny textareas up to 40x80 and kill the hard wrap.+filter{jumping-windows} # Prevent windows from resizing and moving themselves
+filter{jumping-windows} # Prevent windows from resizing and moving themselves.+filter{frameset-borders} # Give frames a border and make them resizeable
+filter{frameset-borders} # Give frames a border and make them resizable.+filter{demoronizer} # Fix MS's non-standard use of standard charsets
+filter{demoronizer} # Fix MS's non-standard use of standard charsets.+filter{shockwave-flash} # Kill embedded Shockwave Flash objects
+filter{shockwave-flash} # Kill embedded Shockwave Flash objects.+filter{quicktime-kioskmode} # Make Quicktime movies savable
+filter{quicktime-kioskmode} # Make Quicktime movies saveable.+filter{crude-parental} # Crude parental filtering (demo only)
+filter{crude-parental} # Crude parental filtering. Note that this filter doesn't work reliably.+filter{ie-exploits} # Disable a known Internet Explorer bug exploits
+filter{ie-exploits} # Disable some known Internet Explorer bug exploits.+filter{site-specifics} # Custom filters for specific site related problems
+filter{site-specifics} # Cure for site-specific problems. Don't apply generally!+filter{google} # Removes text ads and other Google specific improvements
+filter{no-ping} # Removes non-standard ping attributes in <a> and <area> tags.+filter{yahoo} # Removes text ads and other Yahoo specific improvements
+filter{google} # CSS-based block for Google text ads. Also removes a width limitation and the toolbar advertisement.+filter{msn} # Removes text ads and other MSN specific improvements
+filter{yahoo} # CSS-based block for Yahoo text ads. Also removes a width limitation.+filter{blogspot} # Cleans up Blogspot blogs
+filter{msn} # CSS-based block for MSN text ads. Also removes tracking URLs and a width limitation.
8.5.15. force-text-mode8.5.16. force-text-mode8.5.16. forward-override8.5.17. forward-override"forward-socks4"
- to use a socks4 connection (with local DNS resolution) instead.
+ to use a socks4 connection (with local DNS resolution) instead, use "forward-socks5"
+ for socks5 connections (with remote DNS resolution).
+filter{no-ping} # Removes non-standard ping attributes from anchor and area tags
+filter{blogspot} # Cleans up some Blogspot blogs. Read the fine print before using this.# Let the browser revalidate without being tracked across sessions
-{ +hide-if-modified-since{-60} \
+># Let the browser revalidate but make tracking based on the time less likely.
+{+hide-if-modified-since{-60} \
+overwrite-last-modified{randomize} \
+crunch-if-none-match}
/
8.5.22. hide-forwarded-for-headers
- +hide-forwarded-for-headers
8.5.23. hide-from-header
8.5.26. inspect-jpegs
+inspect-jpegs
8.5.27. kill-popups
+kill-popups
8.5.28. limit-connect8.5.26. limit-connect
Privoxy only allows HTTP CONNECT
- requests to port 443 (the standard, secure HTTPS port). Use
- allows HTTP CONNECT requests to all
+ ports. Use limit-connect if more fine-grained control is desired
- for some or all destinations.
+> if fine-grained control
+ is desired for some or all destinations.
- +limit-connect{443} # This is the default and need not be specified.
+>+limit-connect{443} # Port 443 is OK.
+limit-connect{80,443} # Ports 80 and 443 are OK.
+limit-connect{-3, 7, 20-100, 500-} # Ports less than 3, 7, 20 to 100 and above 500 are OK.
+limit-connect{-} # All ports are OK
@@ -5849,7 +5659,7 @@ CLASS="SECT3"
CLASS="SECT3"
>8.5.29. prevent-compression8.5.27. prevent-compressionfilter, and
+ deanimate-gifs
- and kill-popups actions need
- access to the uncompressed data.
+ actions need access to the uncompressed data.
8.5.32. send-vanilla-wafer
- +send-vanilla-wafer
8.5.33. send-wafer
8.5.34. server-header-filter8.5.30. server-header-filter8.5.35. server-header-tagger8.5.31. server-header-tagger8.5.36. session-cookies-only8.5.32. session-cookies-only8.5.37. set-image-blocker8.5.33. set-image-blocker{+send-wafer{UsingPrivoxy=true}}
-my-internal-testing-server.void
8.5.38. treat-forbidden-connects-like-blocks
- +treat-forbidden-connects-like-blocks
8.5.39. Summary8.5.34. Summary
8.7.1. match-all.action
8.7.1. default.action
, but it will still be largely responsible
+ for your overall browsing experience.# Sample default.action file <ijbswa-developers@lists.sourceforge.net>
{ \
+ +change-x-forwarded-for{block} \
+ +hide-from-header{block} \
+ +set-image-blocker{pattern} \
+}
+/ # Match all URLs
+ 8.7.2. default.action
##########################################################################
# Settings -- Don't change! For internal Privoxy use ONLY.
##########################################################################
-
{{settings}}
-for-privoxy-version=3.0
crunch-outgoing-cookies
- +block-as-image = +block +handle-as-image
+ +block-as-image = +block{Blocked image.} +handle-as-image
mercy-for-cookies = -crunch-all-cookies -session-cookies-only -hide-referrer -kill-popups
shop = -crunch-all-cookies -filter{all-popups} -kill-popups
and
- information). We can mark any URL as an image with the +block+block{Banner ads.} }
# Generic patterns:
@@ -8400,8 +7719,8 @@ CLASS="SECT3"
>
{ +block }{ +block{} } section. Note that { +handle-as-image
@@ -8626,9 +7945,9 @@ CLASS="SCREEN"
>{ +block }
+>{Nasty ads.} }
www.example.com/nasty-ads/sponsor\.gif
- another.popular.site.net/more/junk/here/default.filter,
- but it is disabled in the distributed actions file. (My colleagues on the team just
- don't have a sense of humour, that's why! ;-). So you'd like to turn it on in your private,
+ but it is disabled in the distributed actions file.
+ So you'd like to turn it on in your private,
update-safe config, once and for all:8.7.2. user.action8.7.3. user.action
# My user.action file. <fred@foobar.com>
# My user.action file. <fred@example.com>