Vkf code interpretation

can anybody explain this code for me? its used in virtual key figure for a query.  
when 'query name'.
      clear: <l_0distance>.
      if <l_zlesdeitm> ne '000010'.
        clear: <l_zlescpcon>.
      endif.
      if wa_flag ne 'X'.
        clear: wa_flag.
        wa_flag = 'X'.
        clear: it_miles, it_stage.
        refresh:  it_miles, it_stage.
        select * into table it_miles from /bic/azleso00200
                                        where fiscper in r_fisper.
      endif.
      read table it_stage with key shpnum   = <l_0oi_shnum>
                                   stgnum   = <l_zlesstgno>
                                   route    = <l_0route>
                                   kunnr    = <l_zlesdist>
                                   division = <l_0division>
                                   fiscper  = <l_0fiscper>.
      if sy-subrc ne 0.
        it_stage-shpnum   = <l_0oi_shnum>.
        it_stage-stgnum   = <l_zlesstgno>.
        it_stage-kunnr       = <l_zlesdist>.
        it_stage-route    = <l_0route>.
        it_stage-fiscper  = <l_0fiscper>.
        it_stage-division = <l_0division>.
        append it_stage.
        clear  it_stage.
        read table it_miles with key oi_shnum       = <l_0oi_shnum>
                                     /bic/zlesstgno = <l_zlesstgno>
                                     route          = <l_0route>
                                     /bic/zlesdist  = <l_zlesdist>
                                     division       = <l_0division>
                                     fiscper        = <l_0fiscper>.
        if sy-subrc is initial.
          <l_0distance> = it_miles-distance.
        endif.
      endif.
      perform get_dist_frt using <l_zlesflag> <l_0fiscper>
                                 <l_0doc_number>
                           changing <l_zlesdfcst> <l_zlesdicst>
                                    <l_zlesmtdrp> <l_zlessidrp>
                                    <l_0oi_shnum> <l_0shtyp>
                                    <l_zlesshpdt>.
    when others.
      if <l_zlesdeitm> ne '000010'.
        clear: <l_zlescpcon>.
      endif.
      perform get_dist_frt using <l_zlesflag> <l_0fiscper>
                                 <l_0doc_number>
                           changing <l_zlesdfcst> <l_zlesdicst>
                                    <l_zlesmtdrp> <l_zlessidrp>
                                    <l_0oi_shnum> <l_0shtyp>
                                    <l_zlesshpdt>.
  endcase.
endform.                    "USER_---

Bingo! That's it. By comparing against another region that worked correctly I found the problem before I came back to the Forum to check if anyone had replied to my message. Not sure how that got changed - very strange.
Thanks!
John

Similar Messages

  • G-code interpreter

    Hi,
    I am trying to find a g-code interpreter suitable for LabVIEW 2009 SP1. I tryied with ABMsoft NC, but all of the links are broken, and I can't get my hands on it. I would appreciate any advice on how to find one, maybe a reliable link where I can download a trial version and learn about it. Thank you in advance, Marko

    I want to use G-code to controll NI cRIO 9074 with SoftMotion module.....there is this really old thread on g-code and m-code being used in Labview, and one guy posted a link of a g-code parser for ni soft motion 2009, but now the link is broken, and I cant get a hold of anything like that on the net...
    so generally what i need, is a g-code parser (interpreter) that takes in g-code and transforms it into SoftMotion function blocks..I guess thats how it works....and what about ABMsoft NI? I taught thats exactly what I need....where can I find that?
    thank you for your responce,
    Marko

  • G code interpreter using LabVIEW done !!!!!

    I finished my G code interpreter using LabVIEW and I tested , and it gave me excellent results.
    Any one need help, please contact with me.
    ======================================================================
    Khaled Metwally
    [email protected]
    +966540836636

    Hi Khaled,
    I'm Sagar, a Field Application Engineer working for National Instruments, India. At present I'm working with a CNC machine builder in my territory who is interested in using our Motion Control hardware and software tools to build CNC machines. However the customer is demanding for a G code interpreter in LabVIEW that supports 3 axis coordinated motion profile. I would be able to convince my customer to procure our solution only if I can provide him with a G-code interpreter. 
    In this juncture could you please provide me with more information on the G code interpreter you have developed in LabVIEW. Would you be interested in sharing the codes with me so that it would help me better cater to my customer requirements? 
    Awaiting your response. 
    Thank You. 
    Warm Regards. 
    Sagar G Yadav
    Field Applications Engineer
    National Instruments, India

  • Text code interpreted as scientific notation

    I have an http service returning xml to populate a data grid.
    The grid columns are tied to element attributes. One of these
    columns is a simple text code, like a product code. When this
    product code "looks like" scientific notation (e.g. "3E5"), the
    grid is displaying "300000" instead of the code. Is there a way
    somehow to tell the grid that this is a text field, and not a
    number? How do you turn this off? I am rendering the column with a
    label, but it doesn't make any difference. Thanks for any
    tips.

    Is from trying to jam an int into float?That's exactly the cause. Here are some solutions:
    - Use java.text.DecimalFormat to format the output or cast the float to an integer type when you want to print it (presicion might become a problem).
    - Keep the number in an int or long all the time. This way you'll not lose any presicion.
    Explanation can be found in the API docs of Float.toString():"If the argument is NaN, the result is the string "NaN".
    Otherwise, the result is a string that represents the sign and magnitude (absolute value) of the argument. If the sign is negative, the first character of the result is '-' ('-'); if the sign is positive, no sign character appears in the result. As for the magnitude m:
    If m is less than 10^-3 or not less than 10^7, then it is represented in so-called "computerized scientific notation." Let n be the unique integer such that 10n<=m<1; then let a be the mathematically exact quotient of m and 10n so that 1<a<10. The magnitude is then represented as the integer part of a, as a single decimal digit, followed by '.' (.), followed by decimal digits representing the fractional part of a, followed by the letter 'E' (E), followed by a representation of n as a decimal integer, as produced by the method Integer.toString(int) of one argument."

  • Request for sample ZXRSRU01 code-  pass to VKF

    Hello,
    I wrote an earlier mssg but I fear I may have been too complicated in my request.
    I would like to pull a BEx variable user entry in and use it to calculate a key figure.
    I have the virtual KF code working fine.
    I just need help pulling the user value in.
    The variable is a single value entry. So I am unsure about the high/low range that I see in most examples.
    My include is setup as follows-
    *how would I write the code to pull the user entry?
    DATA: L_S_RANGE TYPE RSR_S_RANGESID.
    DATA: LOC_VAR_RANGE LIKE RRRANGEEXIT.
    REFRESH e_t_range.
    *- Steps
    CASE i_step.
      WHEN '2'.
        CASE i_vnam.               " Variable name
      When 'VariableTech_name'.
         <insert code to pull here>
    ENDCASE.
    Additional questions:
    1) Is there a way to turn off the filtering of the user entered variable? I would prefer to only use it to just pass the info to CMOD rather than filter out data on the report.
    2) Do I need to create special BEx variable? (customer exit, etc) Or will any work with this?
    Thank you very much.
    - Brandon

    Hi KJ,
    Thx for the quick reply!
    In the code example-
    and 'MONTH' represents the variable tech name that we are pulling. And 'CUMMONTH' represents the place we are passing it to?
    Is this correct? Then calculations are done in BEx.
    I would like to do calculations in ZXRSRF02.
    If my infoobject is defined as <ZNEWEST> in my virtual KF code-  How do I get it passed to ZXRSRF02?
    I would like to take user entry and pass it to <ZNEWEST> infoobject in my VKF code.
    Here is my code as I translated it from the example:
      WHEN '2'.
        CASE i_vnam.               " Variable name
          WHEN 'ZNEWEST'.
          Loop at I_T_VAR_RANGE INTO LOC_VAR_RANGE
               WHERE VNAM = 'NEWTSK'.
            Clear L_S_RANGE.
            L_S_RANGE-LOW      = LOC_VAR_RANGE-LOW(4).
            L_S_RANGE-LOW+4(2) = '01'.
            L_S_RANGE-HIGH     = LOC_VAR_RANGE-LOW.
            L_S_RANGE-SIGN     = 'I'.
            L_S_RANGE-OPT      = 'BT'.
            APPEND L_S_RANGE to E_T_RANGE.
            EXIT.
          ENDLOOP.
    Thx!

  • Report printing escape codes

    Hi,
    My report comes out with escape codes printed.When I print to file it shows that the escape codes are interpreted correctly BUT they still come out as printable characters when I send to printer. Funny thing is when I output to file then print it using DOS (copy the file to printer port) my report comes out ok with the printer codes interpreted! What could be wrong? sb pls help urgently! I am using reports 6i on WIN2000 platform.
    Mbachi

    You need to set the printer to spool the raw data (and not try and be clever and interpret the escape characters, which is what's happening now). To do this on Windows 2000:
    * Click Start , point to Settings , and then click Printers .
    * Right-click the printer that you want to use and click Properties .
    * On the Advanced tab, click Print Processor .
    * Click Raw in the Default data type box.
    * Click OK to confirm changes.
    * On the Advanced tab, clear the Enable advanced printing features option.
    * Click OK to confirm changes.
    Hope this helps,
    Danny

  • Photoshop or illustrator compositions into edge code

    ok so I could have swore I saw someone in an adobe youtube video take an illustrator or photoshop comp and put it into edge code, which in turn wrote the css for him.. it looked like he made what his site should look like in Ai or Ps and then edge code interpreted it into code.. I am a designer and I can write a little code jus not to the extent of what I want the site I;m working on to look like.. is this possible???? or am I losing my mind??

    Hi Kurt,
    You might be thinking of this: Comp to Code Tool in Brackets – Brackets Blog
    However, "PSD Lens" doesn't automatically convert the whole PSD file into CSS for you in one go -- it just helps you extract targeted styles like gradients and background-image assets while you write the larger-scale CSS structure yourself.  If you're not very comfortable writing CSS yet (e.g. creating layouts with CSS), you might have a difficult time using this tool.  Another option is to import your Photoshop file into Adobe Edge Reflow, use Reflow to create a resizable/responsive layout structure, and then export your project as HTML & CSS.
    Hope that helps!
    - Peter

  • Clean Java Code No SQL

    Has anyone concidered putting all SQL outside the java source code. A properties file seems rather limited so why not xml?
    My goal for posting this topic is to have the JDBC community provide input and suggestions for the given scenario.
    A java app performs a certain task involving a DB the application is ported to another environment and the DB changes and the SQL for the action changes.
    How would you define the SQL outside of the code and how would the java code interpret it, including SQL that is dynamically build using class properties or return values from class methods.
    Thanks for reading this,
    Phil

    upsidedown7 said
    in other words, in about 15 meta data tables,
    you enter your logical data model,
    and click which field(s) to search on, and with is
    editable, the user, and user groups, and it
    builds the application for you.And if one really wants to get away from the advantages of using a database one can use a OO database. Supposedly POET allows one to use any backend database (or at least Oracle and MS SQL Server.) So one doesn't even need to deal with tables or fields. It is all just objects.
    It is always helpful to actually code a database from scratch. Doing so makes it obvious that a database needs to keep track of tables, and table names, and fields and field names and field types, etc. That is all 'meta-data'.
    It makes it more obvious that creating meta data is just duplicating what a database already does.
    And once one starts using a database to store meta-data and to store data in a form that is not consistent with the database model, one looses all advantages associated with a database. Like speed. Like seperation of the data model from the implementation model. Like allowing for different data striping models, archiving models and a slew of other useful tools that have come from 50 years of database technology.
    And then there is migration. Add one field to your model for version 2 and now you have load the entire database in to memory, restructure the data model, and then lay that data back down. A chore that takes a couple of minutes or less in SQL using a relational layout can require a dedicate programmer several weeks to program and can take 12 hours to run on a client side only system (and be impossible on a server side system.)
    Have you ever wondered why OO databases have not taken over the world even though they have been around for more than 10 years. Java didn't even exist when the first OO databases were already in the 2nd generation. And yet there is almost no market for them.
    Consider how many languages, and process control models have been implemented and discarded in the last 50 years. And yet the relational model is stronger than ever. There has to be a reason.
    i have moved all my users to using only
    UPPERCASE data. since i have a rule of
    no stored proceedures and triggers in my db's.And that is a good thing?
    What does that have to do with stored procs?
    using this, we were able to port a single application
    to SQL Server 7, DB anywhere, and Oracle 8i in
    4 days. the application had 121 tables. we had
    a slight problem with dates, but we hammered that
    out.The vast majority of applications will never use a different database. When they do it will be a complete switch.
    Will your method work with 8000 tables (as someone suggested on this forum that they were running?)
    At one company I worked for a single table contained something like 100 million rows (actually for performance reasons we had to break it into 3 tables as archived by date.)
    Will your method work with 100 million rows? That database was 250 gigs and was growing at a rate of 400 meg a day. And they were planing on doubling that rate (and one estimate put it up to 10 times.) How long would it take to store 400,000 rows, every day, using your method? How long would it take to do the accumlation reports that could easily touch 30 million records?
    This isn't to say that your solution isn't correct for your application. If the fields (not the data but the fields) change constantly day to day and your users can get by with the other constraints you have made then it is a good solution.
    But as a general solution I would guess it has some serious flaws. And I for one would never want to handle the migration issue.

  • How to we use CNC G-CODES in LabVIEW?

    I can't find any G-CODES interpretor for labiew.Anyone can help me? Here is my email for the conversation.
    [email protected]
    Thanks.

    Hi eniscelik,
    About integrating existing G-code into LabVIEW, unfortunately, LabVIEW does not currently have any way to do this, as there are no toolkits or modules designed for this type of application, but  NI has  Alliance Partners who specializes in this type of work.Design & Assembly Concepts, Inc. specializes in motion control and does support these types of applications.
    Otherwise you can keep trying to comunicate with Gharb (link below):
    http://forums.ni.com/t5/Motion-Control-and-Motor-Drives/G-code-interpreter-using-LabVIEW-done/td-p/2...  
    If our developers know our customers are asking for it, they will be able to appropriately prioritize their development time, so I would suggest you to go to our NI idea Exchange (find link below) to provide feedback on G-code support.
    http://forums.ni.com/t5/LabVIEW-Idea-Exchange/idb-p/labviewideas
    Regards.

  • Script to download source packages

    Hi there,
    I've made a Bash script "getsrc.sh" which download easily and quickly source packages from AUR or ABS (dependencies : yaourt and makepkg). The idea is just to do in one command, something we usually do in several commands (I use yaourt -G, then makepkg -o). Example :
    /home/ehmicky $ getsrc gnome-terminal
    /tmp/gnome-terminal/src/gnome-terminal-3.2.1 $ ls
    aclocal.m4 AUTHORS ChangeLog ChangeLog.pre-2-23 ChangeLog.README config.guess
    config.h.in config.sub configure configure.ac COPYING depcomp
    gnome-doc-utils.make gnome-terminal.desktop.in.in HACKING help install-sh ltmain.sh
    Makefile.am Makefile.in missing mkinstalldirs NEWS omf.make
    po README src xmldocs.make
    It's just a Bash script you need to source in your ~/.bashrc if you want to use :
    source /path/to/getsrc.sh
    I didn't package it cause I'm new to Archlinux and still uncomfortable with the packaging procedure right now.
    I'm really not sure this might be useful for anyone (it might probably be useless indeed). I guess there are already alternatives doing just the same thign, but since while googling for it, I didn't bump into them, I thought I could post this script just in case.
    Do getsrc -h for usage.
    Here is the script file :
    #!/bin/bash
    #============================================================================
    # NAME : getsrc
    # DESCRIPTION : Download source packages from ABS or AUR.
    # AUTHOR AND COPYRIGHT : ehmicky <ehmickyy at hotmail dot fr>
    # LICENSE : GPL3, see end of file
    # DEPENDENCIES : yaourt makepkg
    # USAGE : getsrc PACKAGE_NAME...
    # INSTALLATION : this file needs to be sourced (e.g. "source
    # getsrc.sh") in your ~/.bashrc
    # VARIABLES :
    # SourceDir : directory where to download the source package (default :
    # current directory)
    # VERSION : 1.1 (13/03/2012)
    # CHANGELOG : 1.1
    # * Supressed output
    # * Fix getopts bug
    # 1.0
    # * First release
    #============================================================================
    #Must define a function so it doesn't spawn a new subshell, and so we can
    #change the current directory of the caller
    getsrc()
    #Define this variable to change the download directory for source packages
    #(default is the current directory)
    local SourceDir="/tmp/MyTemp"
    #Verify dependencies
    test_command()
    while (( $# ))
    do
    if ! type "$1" &> /dev/null
    then
    echo "Error: $1 is not installed." >&2
    return 1
    fi
    shift
    done
    test_command yaourt makepkg
    #Script options : see help message for more info
    local makepkg_options="#"
    OPTIND=1
    while getopts ":hr" Opt
    do
    case "$Opt" in
    h)
    echo "getsrc: Download source packages from ABS or AUR
    Usage: $0 [OPTION]... PACKAGE_NAME...
    -r Use this option if you're root.
    -h Prints this help message.
    E-mail bug reports to: <ehmickyy at hotmail dot fr>"
    return ;;
    r)
    local makepkg_options="--asroot" ;;
    echo "Error: -$OPTARG is not a valid option." >&2
    return 1 ;;
    esac
    done
    shift $(( OPTIND - 1 ))
    local _SourceDir="${SourceDir:-.}"
    if [[ $UID -eq 0 && "$makepkg_options" != *"--asroot"* ]]
    then
    echo "Error: when root, please use the -r flag." >&2
    return 1
    fi
    #Process every argument from command line
    while (( $# ))
    do
    local PreviousDir="$PWD"
    #Go in the source package download directory
    [[ -d "$_SourceDir" ]]\
    || mkdir -p "$_SourceDir"
    if [[ ! -d "$_SourceDir" ]]
    then
    echo "Error: cannot create directory $_SourceDir" >&2
    cd "$PreviousDir"
    return 1
    fi
    cd "$_SourceDir"
    #Download the ABS of the package
    yaourt -G "$1" > /dev/null 2>&1
    #Check is the ABS has been downloaded
    if [[ ! -d "$1" ]]
    then
    echo "Error: $1 is not a valid package name" >&2
    local RelatedPackages="$( yaourt --color -Ss "$1"\
    | sed -n 'h;n;p;g;p'\
    | tac) "
    [[ "$RelatedPackages" =~ ^\ *$ ]]\
    || echo -e "Maybe you meant:\n$RelatedPackages" >&2
    cd "$PreviousDir"
    return 1
    fi
    #Download the source package from the ABS
    cd "$1"
    if ! makepkg -o "$makepkg_options" > /dev/null 2>&1
    then
    echo "Error: could not download source package" >&2
    rm -r "$_SourceDir/$1"
    cd "$PreviousDir"
    return 1
    fi
    #Goes to the root of the source package
    [[ -d "src/" ]]\
    || return
    cd "src/"
    local FinalSourceDir="$( find -mindepth 1 -maxdepth 1 -type d )"
    [[ -d "$FinalSourceDir" ]]\
    && cd "$FinalSourceDir"
    #Process next argument
    shift
    done
    # GNU GENERAL PUBLIC LICENSE
    # Version 3, 29 June 2007
    # Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
    # Everyone is permitted to copy and distribute verbatim copies
    # of this license document, but changing it is not allowed.
    # Preamble
    # The GNU General Public License is a free, copyleft license for
    # software and other kinds of works.
    # The licenses for most software and other practical works are designed
    # to take away your freedom to share and change the works. By contrast,
    # the GNU General Public License is intended to guarantee your freedom to
    # share and change all versions of a program--to make sure it remains free
    # software for all its users. We, the Free Software Foundation, use the
    # GNU General Public License for most of our software; it applies also to
    # any other work released this way by its authors. You can apply it to
    # your programs, too.
    # When we speak of free software, we are referring to freedom, not
    # price. Our General Public Licenses are designed to make sure that you
    # have the freedom to distribute copies of free software (and charge for
    # them if you wish), that you receive source code or can get it if you
    # want it, that you can change the software or use pieces of it in new
    # free programs, and that you know you can do these things.
    # To protect your rights, we need to prevent others from denying you
    # these rights or asking you to surrender the rights. Therefore, you have
    # certain responsibilities if you distribute copies of the software, or if
    # you modify it: responsibilities to respect the freedom of others.
    # For example, if you distribute copies of such a program, whether
    # gratis or for a fee, you must pass on to the recipients the same
    # freedoms that you received. You must make sure that they, too, receive
    # or can get the source code. And you must show them these terms so they
    # know their rights.
    # Developers that use the GNU GPL protect your rights with two steps:
    # (1) assert copyright on the software, and (2) offer you this License
    # giving you legal permission to copy, distribute and/or modify it.
    # For the developers' and authors' protection, the GPL clearly explains
    # that there is no warranty for this free software. For both users' and
    # authors' sake, the GPL requires that modified versions be marked as
    # changed, so that their problems will not be attributed erroneously to
    # authors of previous versions.
    # Some devices are designed to deny users access to install or run
    # modified versions of the software inside them, although the manufacturer
    # can do so. This is fundamentally incompatible with the aim of
    # protecting users' freedom to change the software. The systematic
    # pattern of such abuse occurs in the area of products for individuals to
    # use, which is precisely where it is most unacceptable. Therefore, we
    # have designed this version of the GPL to prohibit the practice for those
    # products. If such problems arise substantially in other domains, we
    # stand ready to extend this provision to those domains in future versions
    # of the GPL, as needed to protect the freedom of users.
    # Finally, every program is threatened constantly by software patents.
    # States should not allow patents to restrict development and use of
    # software on general-purpose computers, but in those that do, we wish to
    # avoid the special danger that patents applied to a free program could
    # make it effectively proprietary. To prevent this, the GPL assures that
    # patents cannot be used to render the program non-free.
    # The precise terms and conditions for copying, distribution and
    # modification follow.
    # TERMS AND CONDITIONS
    # 0. Definitions.
    # "This License" refers to version 3 of the GNU General Public License.
    # "Copyright" also means copyright-like laws that apply to other kinds of
    # works, such as semiconductor masks.
    # "The Program" refers to any copyrightable work licensed under this
    # License. Each licensee is addressed as "you". "Licensees" and
    # "recipients" may be individuals or organizations.
    # To "modify" a work means to copy from or adapt all or part of the work
    # in a fashion requiring copyright permission, other than the making of an
    # exact copy. The resulting work is called a "modified version" of the
    # earlier work or a work "based on" the earlier work.
    # A "covered work" means either the unmodified Program or a work based
    # on the Program.
    # To "propagate" a work means to do anything with it that, without
    # permission, would make you directly or secondarily liable for
    # infringement under applicable copyright law, except executing it on a
    # computer or modifying a private copy. Propagation includes copying,
    # distribution (with or without modification), making available to the
    # public, and in some countries other activities as well.
    # To "convey" a work means any kind of propagation that enables other
    # parties to make or receive copies. Mere interaction with a user through
    # a computer network, with no transfer of a copy, is not conveying.
    # An interactive user interface displays "Appropriate Legal Notices"
    # to the extent that it includes a convenient and prominently visible
    # feature that (1) displays an appropriate copyright notice, and (2)
    # tells the user that there is no warranty for the work (except to the
    # extent that warranties are provided), that licensees may convey the
    # work under this License, and how to view a copy of this License. If
    # the interface presents a list of user commands or options, such as a
    # menu, a prominent item in the list meets this criterion.
    # 1. Source Code.
    # The "source code" for a work means the preferred form of the work
    # for making modifications to it. "Object code" means any non-source
    # form of a work.
    # A "Standard Interface" means an interface that either is an official
    # standard defined by a recognized standards body, or, in the case of
    # interfaces specified for a particular programming language, one that
    # is widely used among developers working in that language.
    # The "System Libraries" of an executable work include anything, other
    # than the work as a whole, that (a) is included in the normal form of
    # packaging a Major Component, but which is not part of that Major
    # Component, and (b) serves only to enable use of the work with that
    # Major Component, or to implement a Standard Interface for which an
    # implementation is available to the public in source code form. A
    # "Major Component", in this context, means a major essential component
    # (kernel, window system, and so on) of the specific operating system
    # (if any) on which the executable work runs, or a compiler used to
    # produce the work, or an object code interpreter used to run it.
    # The "Corresponding Source" for a work in object code form means all
    # the source code needed to generate, install, and (for an executable
    # work) run the object code and to modify the work, including scripts to
    # control those activities. However, it does not include the work's
    # System Libraries, or general-purpose tools or generally available free
    # programs which are used unmodified in performing those activities but
    # which are not part of the work. For example, Corresponding Source
    # includes interface definition files associated with source files for
    # the work, and the source code for shared libraries and dynamically
    # linked subprograms that the work is specifically designed to require,
    # such as by intimate data communication or control flow between those
    # subprograms and other parts of the work.
    # The Corresponding Source need not include anything that users
    # can regenerate automatically from other parts of the Corresponding
    # Source.
    # The Corresponding Source for a work in source code form is that
    # same work.
    # 2. Basic Permissions.
    # All rights granted under this License are granted for the term of
    # copyright on the Program, and are irrevocable provided the stated
    # conditions are met. This License explicitly affirms your unlimited
    # permission to run the unmodified Program. The output from running a
    # covered work is covered by this License only if the output, given its
    # content, constitutes a covered work. This License acknowledges your
    # rights of fair use or other equivalent, as provided by copyright law.
    # You may make, run and propagate covered works that you do not
    # convey, without conditions so long as your license otherwise remains
    # in force. You may convey covered works to others for the sole purpose
    # of having them make modifications exclusively for you, or provide you
    # with facilities for running those works, provided that you comply with
    # the terms of this License in conveying all material for which you do
    # not control copyright. Those thus making or running the covered works
    # for you must do so exclusively on your behalf, under your direction
    # and control, on terms that prohibit them from making any copies of
    # your copyrighted material outside their relationship with you.
    # Conveying under any other circumstances is permitted solely under
    # the conditions stated below. Sublicensing is not allowed; section 10
    # makes it unnecessary.
    # 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
    # No covered work shall be deemed part of an effective technological
    # measure under any applicable law fulfilling obligations under article
    # 11 of the WIPO copyright treaty adopted on 20 December 1996, or
    # similar laws prohibiting or restricting circumvention of such
    # measures.
    # When you convey a covered work, you waive any legal power to forbid
    # circumvention of technological measures to the extent such circumvention
    # is effected by exercising rights under this License with respect to
    # the covered work, and you disclaim any intention to limit operation or
    # modification of the work as a means of enforcing, against the work's
    # users, your or third parties' legal rights to forbid circumvention of
    # technological measures.
    # 4. Conveying Verbatim Copies.
    # You may convey verbatim copies of the Program's source code as you
    # receive it, in any medium, provided that you conspicuously and
    # appropriately publish on each copy an appropriate copyright notice;
    # keep intact all notices stating that this License and any
    # non-permissive terms added in accord with section 7 apply to the code;
    # keep intact all notices of the absence of any warranty; and give all
    # recipients a copy of this License along with the Program.
    # You may charge any price or no price for each copy that you convey,
    # and you may offer support or warranty protection for a fee.
    # 5. Conveying Modified Source Versions.
    # You may convey a work based on the Program, or the modifications to
    # produce it from the Program, in the form of source code under the
    # terms of section 4, provided that you also meet all of these conditions:
    # a) The work must carry prominent notices stating that you modified
    # it, and giving a relevant date.
    # b) The work must carry prominent notices stating that it is
    # released under this License and any conditions added under section
    # 7. This requirement modifies the requirement in section 4 to
    # "keep intact all notices".
    # c) You must license the entire work, as a whole, under this
    # License to anyone who comes into possession of a copy. This
    # License will therefore apply, along with any applicable section 7
    # additional terms, to the whole of the work, and all its parts,
    # regardless of how they are packaged. This License gives no
    # permission to license the work in any other way, but it does not
    # invalidate such permission if you have separately received it.
    # d) If the work has interactive user interfaces, each must display
    # Appropriate Legal Notices; however, if the Program has interactive
    # interfaces that do not display Appropriate Legal Notices, your
    # work need not make them do so.
    # A compilation of a covered work with other separate and independent
    # works, which are not by their nature extensions of the covered work,
    # and which are not combined with it such as to form a larger program,
    # in or on a volume of a storage or distribution medium, is called an
    # "aggregate" if the compilation and its resulting copyright are not
    # used to limit the access or legal rights of the compilation's users
    # beyond what the individual works permit. Inclusion of a covered work
    # in an aggregate does not cause this License to apply to the other
    # parts of the aggregate.
    # 6. Conveying Non-Source Forms.
    # You may convey a covered work in object code form under the terms
    # of sections 4 and 5, provided that you also convey the
    # machine-readable Corresponding Source under the terms of this License,
    # in one of these ways:
    # a) Convey the object code in, or embodied in, a physical product
    # (including a physical distribution medium), accompanied by the
    # Corresponding Source fixed on a durable physical medium
    # customarily used for software interchange.
    # b) Convey the object code in, or embodied in, a physical product
    # (including a physical distribution medium), accompanied by a
    # written offer, valid for at least three years and valid for as
    # long as you offer spare parts or customer support for that product
    # model, to give anyone who possesses the object code either (1) a
    # copy of the Corresponding Source for all the software in the
    # product that is covered by this License, on a durable physical
    # medium customarily used for software interchange, for a price no
    # more than your reasonable cost of physically performing this
    # conveying of source, or (2) access to copy the
    # Corresponding Source from a network server at no charge.
    # c) Convey individual copies of the object code with a copy of the
    # written offer to provide the Corresponding Source. This
    # alternative is allowed only occasionally and noncommercially, and
    # only if you received the object code with such an offer, in accord
    # with subsection 6b.
    # d) Convey the object code by offering access from a designated
    # place (gratis or for a charge), and offer equivalent access to the
    # Corresponding Source in the same way through the same place at no
    # further charge. You need not require recipients to copy the
    # Corresponding Source along with the object code. If the place to
    # copy the object code is a network server, the Corresponding Source
    # may be on a different server (operated by you or a third party)
    # that supports equivalent copying facilities, provided you maintain
    # clear directions next to the object code saying where to find the
    # Corresponding Source. Regardless of what server hosts the
    # Corresponding Source, you remain obligated to ensure that it is
    # available for as long as needed to satisfy these requirements.
    # e) Convey the object code using peer-to-peer transmission, provided
    # you inform other peers where the object code and Corresponding
    # Source of the work are being offered to the general public at no
    # charge under subsection 6d.
    # A separable portion of the object code, whose source code is excluded
    # from the Corresponding Source as a System Library, need not be
    # included in conveying the object code work.
    # A "User Product" is either (1) a "consumer product", which means any
    # tangible personal property which is normally used for personal, family,
    # or household purposes, or (2) anything designed or sold for incorporation
    # into a dwelling. In determining whether a product is a consumer product,
    # doubtful cases shall be resolved in favor of coverage. For a particular
    # product received by a particular user, "normally used" refers to a
    # typical or common use of that class of product, regardless of the status
    # of the particular user or of the way in which the particular user
    # actually uses, or expects or is expected to use, the product. A product
    # is a consumer product regardless of whether the product has substantial
    # commercial, industrial or non-consumer uses, unless such uses represent
    # the only significant mode of use of the product.
    # "Installation Information" for a User Product means any methods,
    # procedures, authorization keys, or other information required to install
    # and execute modified versions of a covered work in that User Product from
    # a modified version of its Corresponding Source. The information must
    # suffice to ensure that the continued functioning of the modified object
    # code is in no case prevented or interfered with solely because
    # modification has been made.
    # If you convey an object code work under this section in, or with, or
    # specifically for use in, a User Product, and the conveying occurs as
    # part of a transaction in which the right of possession and use of the
    # User Product is transferred to the recipient in perpetuity or for a
    # fixed term (regardless of how the transaction is characterized), the
    # Corresponding Source conveyed under this section must be accompanied
    # by the Installation Information. But this requirement does not apply
    # if neither you nor any third party retains the ability to install
    # modified object code on the User Product (for example, the work has
    # been installed in ROM).
    # The requirement to provide Installation Information does not include a
    # requirement to continue to provide support service, warranty, or updates
    # for a work that has been modified or installed by the recipient, or for
    # the User Product in which it has been modified or installed. Access to a
    # network may be denied when the modification itself materially and
    # adversely affects the operation of the network or violates the rules and
    # protocols for communication across the network.
    # Corresponding Source conveyed, and Installation Information provided,
    # in accord with this section must be in a format that is publicly
    # documented (and with an implementation available to the public in
    # source code form), and must require no special password or key for
    # unpacking, reading or copying.
    # 7. Additional Terms.
    # "Additional permissions" are terms that supplement the terms of this
    # License by making exceptions from one or more of its conditions.
    # Additional permissions that are applicable to the entire Program shall
    # be treated as though they were included in this License, to the extent
    # that they are valid under applicable law. If additional permissions
    # apply only to part of the Program, that part may be used separately
    # under those permissions, but the entire Program remains governed by
    # this License without regard to the additional permissions.
    # When you convey a copy of a covered work, you may at your option
    # remove any additional permissions from that copy, or from any part of
    # it. (Additional permissions may be written to require their own
    # removal in certain cases when you modify the work.) You may place
    # additional permissions on material, added by you to a covered work,
    # for which you have or can give appropriate copyright permission.
    # Notwithstanding any other provision of this License, for material you
    # add to a covered work, you may (if authorized by the copyright holders of
    # that material) supplement the terms of this License with terms:
    # a) Disclaiming warranty or limiting liability differently from the
    # terms of sections 15 and 16 of this License; or
    # b) Requiring preservation of specified reasonable legal notices or
    # author attributions in that material or in the Appropriate Legal
    # Notices displayed by works containing it; or
    # c) Prohibiting misrepresentation of the origin of that material, or
    # requiring that modified versions of such material be marked in
    # reasonable ways as different from the original version; or
    # d) Limiting the use for publicity purposes of names of licensors or
    # authors of the material; or
    # e) Declining to grant rights under trademark law for use of some
    # trade names, trademarks, or service marks; or
    # f) Requiring indemnification of licensors and authors of that
    # material by anyone who conveys the material (or modified versions of
    # it) with contractual assumptions of liability to the recipient, for
    # any liability that these contractual assumptions directly impose on
    # those licensors and authors.
    # All other non-permissive additional terms are considered "further
    # restrictions" within the meaning of section 10. If the Program as you
    # received it, or any part of it, contains a notice stating that it is
    # governed by this License along with a term that is a further
    # restriction, you may remove that term. If a license document contains
    # a further restriction but permits relicensing or conveying under this
    # License, you may add to a covered work material governed by the terms
    # of that license document, provided that the further restriction does
    # not survive such relicensing or conveying.
    # If you add terms to a covered work in accord with this section, you
    # must place, in the relevant source files, a statement of the
    # additional terms that apply to those files, or a notice indicating
    # where to find the applicable terms.
    # Additional terms, permissive or non-permissive, may be stated in the
    # form of a separately written license, or stated as exceptions;
    # the above requirements apply either way.
    # 8. Termination.
    # You may not propagate or modify a covered work except as expressly
    # provided under this License. Any attempt otherwise to propagate or
    # modify it is void, and will automatically terminate your rights under
    # this License (including any patent licenses granted under the third
    # paragraph of section 11).
    # However, if you cease all violation of this License, then your
    # license from a particular copyright holder is reinstated (a)
    # provisionally, unless and until the copyright holder explicitly and
    # finally terminates your license, and (b) permanently, if the copyright
    # holder fails to notify you of the violation by some reasonable means
    # prior to 60 days after the cessation.
    # Moreover, your license from a particular copyright holder is
    # reinstated permanently if the copyright holder notifies you of the
    # violation by some reasonable means, this is the first time you have
    # received notice of violation of this License (for any work) from that
    # copyright holder, and you cure the violation prior to 30 days after
    # your receipt of the notice.
    # Termination of your rights under this section does not terminate the
    # licenses of parties who have received copies or rights from you under
    # this License. If your rights have been terminated and not permanently
    # reinstated, you do not qualify to receive new licenses for the same
    # material under section 10.
    # 9. Acceptance Not Required for Having Copies.
    # You are not required to accept this License in order to receive or
    # run a copy of the Program. Ancillary propagation of a covered work
    # occurring solely as a consequence of using peer-to-peer transmission
    # to receive a copy likewise does not require acceptance. However,
    # nothing other than this License grants you permission to propagate or
    # modify any covered work. These actions infringe copyright if you do
    # not accept this License. Therefore, by modifying or propagating a
    # covered work, you indicate your acceptance of this License to do so.
    # 10. Automatic Licensing of Downstream Recipients.
    # Each time you convey a covered work, the recipient automatically
    # receives a license from the original licensors, to run, modify and
    # propagate that work, subject to this License. You are not responsible
    # for enforcing compliance by third parties with this License.
    # An "entity transaction" is a transaction transferring control of an
    # organization, or substantially all assets of one, or subdividing an
    # organization, or merging organizations. If propagation of a covered
    # work results from an entity transaction, each party to that
    # transaction who receives a copy of the work also receives whatever
    # licenses to the work the party's predecessor in interest had or could
    # give under the previous paragraph, plus a right to possession of the
    # Corresponding Source of the work from the predecessor in interest, if
    # the predecessor has it or can get it with reasonable efforts.
    # You may not impose any further restrictions on the exercise of the
    # rights granted or affirmed under this License. For example, you may
    # not impose a license fee, royalty, or other charge for exercise of
    # rights granted under this License, and you may not initiate litigation
    # (including a cross-claim or counterclaim in a lawsuit) alleging that
    # any patent claim is infringed by making, using, selling, offering for
    # sale, or importing the Program or any portion of it.
    # 11. Patents.
    # A "contributor" is a copyright holder who authorizes use under this
    # License of the Program or a work on which the Program is based. The
    # work thus licensed is called the contributor's "contributor version".
    # A contributor's "essential patent claims" are all patent claims
    # owned or controlled by the contributor, whether already acquired or
    # hereafter acquired, that would be infringed by some manner, permitted
    # by this License, of making, using, or selling its contributor version,
    # but do not include claims that would be infringed only as a
    # consequence of further modification of the contributor version. For
    # purposes of this definition, "control" includes the right to grant
    # patent sublicenses in a manner consistent with the requirements of
    # this License.
    # Each contributor grants you a non-exclusive, worldwide, royalty-free
    # patent license under the contributor's essential patent claims, to
    # make, use, sell, offer for sale, import and otherwise run, modify and
    # propagate the contents of its contributor version.
    # In the following three paragraphs, a "patent license" is any express
    # agreement or commitment, however denominated, not to enforce a patent
    # (such as an express permission to practice a patent or covenant not to
    # sue for patent infringement). To "grant" such a patent license to a
    # party means to make such an agreement or commitment not to enforce a
    # patent against the party.
    # If you convey a covered work, knowingly relying on a patent license,
    # and the Corresponding Source of the work is not available for anyone
    # to copy, free of charge and under the terms of this License, through a
    # publicly available network server or other readily accessible means,
    # then you must either (1) cause the Corresponding Source to be so
    # available, or (2) arrange to deprive yourself of the benefit of the
    # patent license for this particular work, or (3) arrange, in a manner
    # consistent with the requirements of this License, to extend the patent
    # license to downstream recipients. "Knowingly relying" means you have
    # actual knowledge that, but for the patent license, your conveying the
    # covered work in a country, or your recipient's use of the covered work
    # in a country, would infringe one or more identifiable patents in that
    # country that you have reason to believe are valid.
    # If, pursuant to or in connection with a single transaction or
    # arrangement, you convey, or propagate by procuring conveyance of, a
    # covered work, and grant a patent license to some of the parties
    # receiving the covered work authorizing them to use, propagate, modify
    # or convey a specific copy of the covered work, then the patent license
    # you grant is automatically extended to all recipients of the covered
    # work and works based on it.
    # A patent license is "discriminatory" if it does not include within
    # the scope of its coverage, prohibits the exercise of, or is
    # conditioned on the non-exercise of one or more of the rights that are
    # specifically granted under this License. You may not convey a covered
    # work if you are a party to an arrangement with a third party that is
    # in the business of distributing software, under which you make payment
    # to the third party based on the extent of your activity of conveying
    # the work, and under which the third party grants, to any of the
    # parties who would receive the covered work from you, a discriminatory
    # patent license (a) in connection with copies of the covered work
    # conveyed by you (or copies made from those copies), or (b) primarily
    # for and in connection with specific products or compilations that
    # contain the covered work, unless you entered into that arrangement,
    # or that patent license was granted, prior to 28 March 2007.
    # Nothing in this License shall be construed as excluding or limiting
    # any implied license or other defenses to infringement that may
    # otherwise be available to you under applicable patent law.
    # 12. No Surrender of Others' Freedom.
    # If conditions are imposed on you (whether by court order, agreement or
    # otherwise) that contradict the conditions of this License, they do not
    # excuse you from the conditions of this License. If you cannot convey a
    # covered work so as to satisfy simultaneously your obligations under this
    # License and any other pertinent obligations, then as a consequence you may
    # not convey it at all. For example, if you agree to terms that obligate you
    # to collect a royalty for further conveying from those to whom you convey
    # the Program, the only way you could satisfy both those terms and this
    # License would be to refrain entirely from conveying the Program.
    # 13. Use with the GNU Affero General Public License.
    # Notwithstanding any other provision of this License, you have
    # permission to link or combine any covered work with a work licensed
    # under version 3 of the GNU Affero General Public License into a single
    # combined work, and to convey the resulting work. The terms of this
    # License will continue to apply to the part which is the covered work,
    # but the special requirements of the GNU Affero General Public License,
    # section 13, concerning interaction through a network will apply to the
    # combination as such.
    # 14. Revised Versions of this License.
    # The Free Software Foundation may publish revised and/or new versions of
    # the GNU General Public License from time to time. Such new versions will
    # be similar in spirit to the present version, but may differ in detail to
    # address new problems or concerns.
    # Each version is given a distinguishing version number. If the
    # Program specifies that a certain numbered version of the GNU General
    # Public License "or any later version" applies to it, you have the
    # option of following the terms and conditions either of that numbered
    # version or of any later version published by the Free Software
    # Foundation. If the Program does not specify a version number of the
    # GNU General Public License, you may choose any version ever published
    # by the Free Software Foundation.
    # If the Program specifies that a proxy can decide which future
    # versions of the GNU General Public License can be used, that proxy's
    # public statement of acceptance of a version permanently authorizes you
    # to choose that version for the Program.
    # Later license versions may give you additional or different
    # permissions. However, no additional obligations are imposed on any
    # author or copyright holder as a result of your choosing to follow a
    # later version.
    # 15. Disclaimer of Warranty.
    # THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
    # APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
    # HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
    # OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
    # THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
    # PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
    # IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
    # ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
    # 16. Limitation of Liability.
    # IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
    # WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
    # THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
    # GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
    # USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
    # DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
    # PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
    # EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
    # SUCH DAMAGES.
    # 17. Interpretation of Sections 15 and 16.
    # If the disclaimer of warranty and limitation of liability provided
    # above cannot be given local legal effect according to their terms,
    # reviewing courts shall apply local law that most closely approximates
    # an absolute waiver of all civil liability in connection with the
    # Program, unless a warranty or assumption of liability accompanies a
    # copy of the Program in return for a fee.
    # END OF TERMS AND CONDITIONS
    # How to Apply These Terms to Your New Programs
    # If you develop a new program, and you want it to be of the greatest
    # possible use to the public, the best way to achieve this is to make it
    # free software which everyone can redistribute and change under these terms.
    # To do so, attach the following notices to the program. It is safest
    # to attach them to the start of each source file to most effectively
    # state the exclusion of warranty; and each file should have at least
    # the "copyright" line and a pointer to where the full notice is found.
    # <one line to give the program's name and a brief idea of what it does.>
    # Copyright (C) <year> <name of author>
    # This program is free software: you can redistribute it and/or modify
    # it under the terms of the GNU General Public License as published by
    # the Free Software Foundation, either version 3 of the License, or
    # (at your option) any later version.
    # This program is distributed in the hope that it will be useful,
    # but WITHOUT ANY WARRANTY; without even the implied warranty of
    # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    # GNU General Public License for more details.
    # You should have received a copy of the GNU General Public License
    # along with this program. If not, see <http://www.gnu.org/licenses/>.
    # Also add information on how to contact you by electronic and paper mail.
    # If the program does terminal interaction, make it output a short
    # notice like this when it starts in an interactive mode:
    # <program> Copyright (C) <year> <name of author>
    # This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
    # This is free software, and you are welcome to redistribute it
    # under certain conditions; type `show c' for details.
    # The hypothetical commands `show w' and `show c' should show the appropriate
    # parts of the General Public License. Of course, your program's commands
    # might be different; for a GUI interface, you would use an "about box".
    # You should also get your employer (if you work as a programmer) or school,
    # if any, to sign a "copyright disclaimer" for the program, if necessary.
    # For more information on this, and how to apply and follow the GNU GPL, see
    # <http://www.gnu.org/licenses/>.
    # The GNU General Public License does not permit incorporating your program
    # into proprietary programs. If your program is a subroutine library, you
    # may consider it more useful to permit linking proprietary applications with
    # the library. If this is what you want to do, use the GNU Lesser General
    # Public License instead of this License. But first, please read
    # <http://www.gnu.org/philosophy/why-not-lgpl.html>.
    Last edited by ehmicky (2012-03-13 20:46:18)

    Here is the output of makepkg -s when I try to install packer:
    [tilley@take-kun packer]$ makepkg -s
    ==> Determining latest git revision...
      -> Version found: 20120509
    ==> Making package: packer 20120509-1 (Wed May  9 17:27:52 CDT 2012)
    ==> Checking runtime dependencies...
    ==> Installing missing dependencies...
    resolving dependencies...
    looking for inter-conflicts...
    Targets (2): jansson-2.3-1  jshon-20111222-1
    Total Download Size:    0.04 MiB
    Total Installed Size:   0.17 MiB
    Proceed with installation? [Y/n] y
    :: Retrieving packages from community...
    jansson-2.3-1-x86_64      30.5 KiB   150K/s 00:00 [######################] 100%
    jshon-20111222-1-x86_64    9.8 KiB   806K/s 00:00 [######################] 100%
    (2/2) checking package integrity                   [######################] 100%
    (2/2) loading package files                        [######################] 100%
    (2/2) checking for file conflicts                  [######################] 100%
    (2/2) checking available disk space                [######################] 100%
    (1/2) installing jansson                           [######################] 100%
    (2/2) installing jshon                             [######################] 100%
    ==> Checking buildtime dependencies...
    ==> Retrieving Sources...
    ==> Extracting Sources...
    ==> Entering fakeroot environment...
    ==> Starting build()...
    ==> Connecting to github GIT server....
    Cloning into 'packer'...
    error: Could not resolve host: (nil); No address associated with hostname while accessing https://github.com/bruenig/packer.git/info/refs
    fatal: HTTP request failed
    ==> ERROR: A failure occurred in build().
        Aborting...

  • Issue with spamassassin, now mail not working

    Hi ! I installed spamtrainer almost two months ago. Been feeding the [email protected] for several weeks now , 700 emails each day at least .
    There was very little improvement if none at all. Tried to add "@local_domains_maps = (1)" to amavisd.conf last night thinking it might be the problem , though no virtual domain exist. This was one of the issue on the default Amavisd config. The other one is adding the symbolic link which I already done.
    Computer froze while adding the parameter "@local_domains_maps = (1)", so I manually turn off the Power Mac, then mail stopped altogether. The mails are filing up but the clients couldn't send or receive since this incidence .
    FF is the maincf. and amavis.conf
    All help are greatly appreciated.
    mail:/Users/sysadmin root# postconf -n
    alias_maps = hash:/etc/aliases,hash:/var/mailman/data/aliases
    always_bcc =
    command_directory = /usr/sbin
    config_directory = /etc/postfix
    content_filter = smtp-amavis:[127.0.0.1]:10024
    daemon_directory = /usr/libexec/postfix
    debug_peer_level = 2
    enable_server_options = yes
    html_directory = no
    inet_interfaces = all
    local_recipient_maps = proxy:unix:passwd.byname $alias_maps
    luser_relay =
    mail_owner = postfix
    mailbox_size_limit = 0
    mailbox_transport = cyrus
    mailq_path = /usr/bin/mailq
    manpage_directory = /usr/share/man
    maps_rbl_domains =
    message_size_limit = 31457280
    mydestination = $myhostname,localhost.$mydomain,localhost,mail.cpplaw.com,cpplaw.com
    mydomain = cpplaw.com
    mydomain_fallback = localhost
    myhostname = mail.cpplaw.com
    mynetworks = 127.0.0.1/32,192.168.1.0/24,127.0.0.1
    mynetworks_style = host
    newaliases_path = /usr/bin/newaliases
    owner_request_special = no
    queue_directory = /private/var/spool/postfix
    readme_directory = /usr/share/doc/postfix
    recipient_delimiter = +
    relayhost =
    sample_directory = /usr/share/doc/postfix/examples
    sendmail_path = /usr/sbin/sendmail
    setgid_group = postdrop
    smtpd_client_restrictions = permit_mynetworks permit
    smtpd_tls_key_file =
    unknown_local_recipient_reject_code = 550
    virtual_mailbox_domains =
    virtual_transport = virtual
    mail:/Users/sysadmin root# postconf -n
    alias_maps = hash:/etc/aliases,hash:/var/mailman/data/aliases
    always_bcc =
    command_directory = /usr/sbin
    config_directory = /etc/postfix
    content_filter = smtp-amavis:[127.0.0.1]:10024
    daemon_directory = /usr/libexec/postfix
    debug_peer_level = 2
    enable_server_options = yes
    html_directory = no
    inet_interfaces = all
    local_recipient_maps = proxy:unix:passwd.byname $alias_maps
    luser_relay =
    mail_owner = postfix
    mailbox_size_limit = 0
    mailbox_transport = cyrus
    mailq_path = /usr/bin/mailq
    manpage_directory = /usr/share/man
    maps_rbl_domains =
    message_size_limit = 31457280
    mydestination = $myhostname,localhost.$mydomain,localhost,mail.cpplaw.com,cpplaw.com
    mydomain = cpplaw.com
    mydomain_fallback = localhost
    myhostname = mail.cpplaw.com
    mynetworks = 127.0.0.1/32,192.168.1.0/24,127.0.0.1
    mynetworks_style = host
    newaliases_path = /usr/bin/newaliases
    owner_request_special = no
    queue_directory = /private/var/spool/postfix
    readme_directory = /usr/share/doc/postfix
    recipient_delimiter = +
    relayhost =
    sample_directory = /usr/share/doc/postfix/examples
    sendmail_path = /usr/sbin/sendmail
    setgid_group = postdrop
    smtpd_client_restrictions = permit_mynetworks permit
    smtpd_tls_key_file =
    unknown_local_recipient_reject_code = 550
    virtual_mailbox_domains =
    virtual_transport = virtual
    mail:/Users/sysadmin root#
    _______________________Amavisd.cof_________________________
    use strict;
    # Configuration file for amavisd-new
    # This software is licensed under the GNU General Public License (GPL).
    # See comments at the start of amavisd-new for the whole license text.
    #Sections:
    # Section I - Essential daemon and MTA settings
    # Section II - MTA specific
    # Section III - Logging
    # Section IV - Notifications/DSN, BOUNCE/REJECT/DROP/PASS destiny, quarantine
    # Section V - Per-recipient and per-sender handling, whitelisting, etc.
    # Section VI - Resource limits
    # Section VII - External programs, virus scanners, SpamAssassin
    # Section VIII - Debugging
    #GENERAL NOTES:
    # This file is a normal Perl code, interpreted by Perl itself.
    # - make sure this file (or directory where it resides) is NOT WRITABLE
    # by mere mortals, otherwise it represents a severe security risk!
    # - for values which are interpreted as booleans, it is recommended
    # to use 1 for true, and 0 or undef or '' for false.
    # THIS IS DIFFERENT FROM OLDER AMAVIS VERSIONS where "no" also meant false,
    # now it means true, like any nonempty string does!
    # - Perl syntax applies. Most notably: strings in "" may include variables
    # (which start with $ or @); to include characters @ and $ in double
    # quoted strings, precede them by a backslash; in single-quoted strings
    # the $ and @ lose their special meaning, so it is usually easier to use
    # single quoted strings. Still, in both cases a backslash need to be doubled
    # - variables with names starting with a '@' are lists, the values assigned
    # to them should be lists as well, e.g. ('one@foo', $mydomain, "three");
    # note the comma-separation and parenthesis. If strings in the list
    # do not contain spaces nor variables, a Perl operator qw() may be used
    # as a shorthand to split its argument on whitespace and produce a list
    # of strings, e.g. qw( one@foo example.com three ); Note that the argument
    # to qw is quoted implicitly and no variable interpretation is done within
    # (no '$' variable evaluations). The #-initiated comments can not be used
    # within the string. In other words, $ and # lose their special meaning
    # withing a qw argument, just like within '...' strings.
    # - all e-mail addresses in this file and as used internally by the daemon
    # are in their raw (rfc2821-unquoted and nonbracketed) form, i.e.
    # Bob "Funny" [email protected], not: "Bob \"Funny\" Dude"@example.com
    # and not <"@example.com>; also: '' and not ''.
    # Section I - Essential daemon and MTA settings
    # $MYHOME serves as a quick default for some other configuration settings.
    # More refined control is available with each individual setting further down.
    # $MYHOME is not used directly by the program. No trailing slash!
    #$MYHOME = '/var/lib/amavis'; # (default is '/var/amavis')
    # : $mydomain serves as a quick default for some other configuration settings.
    # : More refined control is available with each individual setting further down.
    # : $mydomain is never used directly by the program.
    $mydomain = 'cpplaw.com'; aol.com'; # (no useful default)
    # Set the user and group to which the daemon will change if started as root
    # (otherwise just keep the UID unchanged, and these settings have no effect):
    $daemon_user = 'clamav'; # (no default; customary: vscan or amavis)
    $daemon_group = 'clamav'; # (no default; customary: vscan or amavis)
    # Runtime working directory (cwd), and a place where
    # temporary directories for unpacking mail are created.
    # (no trailing slash, may be a scratch file system)
    $TEMPBASE = $MYHOME; # (must be set if other config vars use is)
    #$TEMPBASE = "$MYHOME/tmp"; # prefer to keep home dir /var/amavis clean?
    # $helpers_home sets environment variable HOME, and is passed as option
    # 'home_dir_for_helpers' to Mail::SpamAssassin::new. It should be a directory
    # on a normal persistent file system, not a scratch or temporary file system
    #$helpers_home = $MYHOME; # (defaults to $MYHOME)
    #$daemon_chroot_dir = $MYHOME; # (default is undef, meaning: do not chroot)
    #$pid_file = "$MYHOME/amavisd.pid"; # (default is "$MYHOME/amavisd.pid")
    #$lock_file = "$MYHOME/amavisd.lock"; # (default is "$MYHOME/amavisd.lock")
    # set environment variables if you want (no defaults):
    $ENV{TMPDIR} = $TEMPBASE; # wise, but usually not necessary
    # MTA SETTINGS, UNCOMMENT AS APPROPRIATE,
    # both $forward_method and $notify_method default to 'smtp:127.0.0.1:10025'
    # POSTFIX, or SENDMAIL in dual-MTA setup, or EXIM V4
    # (set host and port number as required; host can be specified
    # as IP address or DNS name (A or CNAME, but MX is ignored)
    #$forward_method = 'smtp:127.0.0.1:10025'; # where to forward checked mail
    #$notify_method = $forward_method; # where to submit notifications
    # NOTE: The defaults (above) are good for Postfix or dual-sendmail. You MUST
    # uncomment the approprate settings below if using other setups!
    # SENDMAIL MILTER, using amavis-milter.c helper program:
    #$forward_method = undef; # no explicit forwarding, sendmail does it by itself
    # milter; option -odd is needed to avoid deadlocks
    #$notify_method = 'pipe:flags=q argv=/usr/sbin/sendmail -Ac -i -odd -f ${sender} -- ${recipient}';
    # just a thought: can we use use -Am instead of -odd ?
    # SENDMAIL (old non-milter setup, as relay):
    #$forward_method = 'pipe:flags=q argv=/usr/sbin/sendmail -C/etc/sendmail.orig.cf -i -f ${sender} -- ${recipient}';
    #$notify_method = $forward_method;
    # SENDMAIL (old non-milter setup, amavis.c calls local delivery agent):
    #$forward_method = undef; # no explicit forwarding, amavis.c will call LDA
    #$notify_method = 'pipe:flags=q argv=/usr/sbin/sendmail -Ac -i -f ${sender} -- ${recipient}';
    # EXIM v3 (not recommended with v4 or later, which can use SMTP setup instead):
    #$forward_method = 'pipe:flags=q argv=/usr/sbin/exim -oMr scanned-ok -i -f ${sender} -- ${recipient}';
    #$notify_method = $forward_method;
    # prefer to collect mail for forwarding as BSMTP files?
    #$forward_method = "bsmtp:$MYHOME/out-%i-%n.bsmtp";
    #$notify_method = $forward_method;
    # Net::Server pre-forking settings
    # You may want $max_servers to match the width of your MTA pipe
    # feeding amavisd, e.g. with Postfix the 'Max procs' field in the
    # master.cf file, like the '2' in the: smtp-amavis unix - - n - 2 smtp
    $max_servers = 2; # number of pre-forked children (default 2)
    $max_requests = 10; # retire a child after that many accepts (default 10)
    $child_timeout=5*60; # abort child if it does not complete each task in n sec
    # (default: 8*60 seconds)
    # Check also the settings of @av_scanners at the end if you want to use
    # virus scanners. If not, you may want to delete the whole long assignment
    # to the variable @av_scanners, which will also remove the virus checking
    # code (e.g. if you only want to do spam scanning).
    # Here is a QUICK WAY to completely DISABLE some sections of code
    # that WE DO NOT WANT (it won't even be compiled-in).
    # For more refined controls leave the following two lines commented out,
    # and see further down what these two lookup lists really mean.
    #@bypass_virus_checks_acl = qw( . ); # uncomment to DISABLE anti-virus code
    #@bypass_spam_checks_acl = qw( . ); # uncomment to DISABLE anti-spam code
    # Any setting can be changed with a new assignment, so make sure
    # you do not unintentionally override these settings further down!
    # Lookup list of local domains (see README.lookups for syntax details)
    # NOTE:
    # For backwards compatibility the variable names @local_domains (old) and
    # @local_domains_acl (new) are synonyms. For consistency with other lookups
    # the name @local_domains_acl is now preferred. It also makes it more
    # obviously distinct from the new %local_domains hash lookup table.
    # local_domains* lookup tables are used in deciding whether a recipient
    # is local or not, or in other words, if the message is outgoing or not.
    # This affects inserting spam-related headers for local recipients,
    # limiting recipient virus notifications (if enabled) to local recipients,
    # in deciding if address extension may be appended, and in SQL lookups
    # for non-fqdn addresses. Set it up correctly if you need features
    # that rely on this setting (or just leave empty otherwise).
    # With Postfix (2.0) a quick reminder on what local domains normally are:
    # a union of domains spacified in: $mydestination, $virtual_alias_domains,
    # $virtual_mailbox_domains, and $relay_domains.
    @local_domains_acl = ( ".$mydomain" ); # $mydomain and its subdomains
    # @local_domains_acl = qw(); # default is empty, no recipient treated as local
    # @local_domains_acl = qw( .example.com );
    # @local_domains_acl = qw( .example.com !host.sub.example.net .sub.example.net );
    # @local_domains_acl = ( ".$mydomain", '.example.com', 'sub.example.net' );
    # or alternatively(A), using a Perl hash lookup table, which may be assigned
    # directly, or read from a file, one domain per line; comments and empty lines
    # are ignored, a dot before a domain name implies its subdomains:
    #read_hash(\%local_domains, '/var/amavis/local_domains');
    #or alternatively(B), using a list of regular expressions:
    # $local_domains_re = new_RE( qr'[@.]example\.com$'i );
    # see README.lookups for syntax and semantics
    # Section II - MTA specific (defaults should be ok)
    # if $relayhost_is_client is true, IP address in $notify_method and
    # $forward_method is dynamically overridden with SMTP client peer address
    # if available, which makes possible for several hosts to share one daemon
    #$relayhost_is_client = 1; # (defaults to false)
    #$insert_received_line = 1; # behave like MTA: insert 'Received:' header
    # (does not apply to sendmail/milter)
    # (default is true)
    # AMAVIS-CLIENT PROTOCOL INPUT SETTINGS (e.g. with sendmail milter)
    # (used with amavis helper clients like amavis-milter.c and amavis.c,
    # NOT needed for Postfix and Exim)
    $unix_socketname = "$MYHOME/amavisd.sock"; # amavis helper protocol socket
    #$unix_socketname = undef; # disable listening on a unix socket
    # (default is undef, i.e. disabled)
    # (usual setting is $MYHOME/amavisd.sock)
    # Do we receive quoted or raw addresses from the helper program?
    # (does not apply to SMTP; defaults to true)
    #$gets_addr_in_quoted_form = 1; # "Bob \"Funny\" Dude"@example.com
    #$gets_addr_in_quoted_form = 0; # Bob "Funny" [email protected]
    # SMTP SERVER (INPUT) PROTOCOL SETTINGS (e.g. with Postfix, Exim v4, ...)
    # (used when MTA is configured to pass mail to amavisd via SMTP or LMTP)
    $inet_socket_port = 10024; # accept SMTP on this local TCP port
    # (default is undef, i.e. disabled)
    # multiple ports may be provided: $inet_socket_port = [10024, 10026, 10028];
    # SMTP SERVER (INPUT) access control
    # - do not allow free access to the amavisd SMTP port !!!
    # when MTA is at the same host, use the following (one or the other or both):
    #$inet_socket_bind = '127.0.0.1'; # limit socket bind to loopback interface
    # (default is '127.0.0.1')
    @inet_acl = qw( 127.0.0.1 ); # allow SMTP access only from localhost IP
    # (default is qw( 127.0.0.1 ) )
    # when MTA (one or more) is on a different host, use the following:
    #@inet_acl = qw(127/8 10.1.0.1 10.1.0.2); # adjust the list as appropriate
    #$inet_socket_bind = undef; # bind to all IP interfaces
    # Example1:
    # @inet_acl = qw( 127/8 10/8 172.16/12 192.168/16 );
    # permit only SMTP access from loopback and rfc1918 private address space
    # Example2:
    # @inet_acl = qw( !192.168.1.12 172.16.3.3 !172.16.3/255.255.255.0
    # 127.0.0.1 10/8 172.16/12 192.168/16 );
    # matches loopback and rfc1918 private address space except host 192.168.1.12
    # and net 172.16.3/24 (but host 172.16.3.3 within 172.16.3/24 still matches)
    # Example3:
    # @inet_acl = qw( 127/8
    # !172.16.3.0 !172.16.3.127 172.16.3.0/25
    # !172.16.3.128 !172.16.3.255 172.16.3.128/25 );
    # matches loopback and both halves of the 172.16.3/24 C-class,
    # split into two subnets, except all four broadcast addresses
    # for these subnets
    # See README.lookups for details on specifying access control lists.
    # Section III - Logging
    # true (e.g. 1) => syslog; false (e.g. 0) => logging to file
    $DO_SYSLOG = 0; # (defaults to false)
    #$SYSLOG_LEVEL = 'user.info'; # (defaults to 'mail.info')
    # Log file (if not using syslog)
    $LOGFILE = "/var/log/amavis.log"; # (defaults to empty, no log)
    #NOTE: levels are not strictly observed and are somewhat arbitrary
    # 0: startup/exit/failure messages, viruses detected
    # 1: args passed from client, some more interesting messages
    # 2: virus scanner output, timing
    # 3: server, client
    # 4: decompose parts
    # 5: more debug details
    $log_level = 4; # (defaults to 0)
    # Customizeable template for the most interesting log file entry (e.g. with
    # $log_level=0) (take care to properly quote Perl special characters like '\')
    # For a list of available macros see README.customize .
    # only log infected messages (useful with log level 0):
    # $log_templ = '[? %#V |[? %#F ||banned filename ([%F|,])]|infected ([%V|,])]#
    # [? %#V |[? %#F ||, from=<%o>, to=[<%R>|,][? %i ||, quarantine %i]]#
    # |, from=<%o>, to=[<%R>|,][? %i ||, quarantine %i]]';
    # log both infected and noninfected messages (default):
    $log_templ = '[? %#V |[? %#F |[?%#D|Not-Delivered|Passed]|BANNED name/type (%F)]|INFECTED (%V)], #
    <%o> -> [<%R>|,][? %i ||, quarantine %i], Message-ID: %m, Hits: %c';
    # Section IV - Notifications/DSN, BOUNCE/REJECT/DROP/PASS destiny, quarantine
    # Select notifications text encoding when Unicode-aware Perl is converting
    # text from internal character representation to external encoding (charset
    # in MIME terminology)
    # to be used in RFC 2047-encoded header field bodies, e.g. in Subject:
    #$hdr_encoding = 'iso-8859-1'; # (default: 'iso-8859-1')
    # to be used in notification body text: its encoding and Content-type.charset
    #$bdy_encoding = 'iso-8859-1'; # (default: 'iso-8859-1')
    # Default template texts for notifications may be overruled by directly
    # assigning new text to template variables, or by reading template text
    # from files. A second argument may be specified in a call to read_text(),
    # specifying character encoding layer to be used when reading from the
    # external file, e.g. 'utf8', 'iso-8859-1', or often just $bdy_encoding.
    # Text will be converted to internal character representation by Perl 5.8.0
    # or later; second argument is ignored otherwise. See PerlIO::encoding,
    # Encode::PerlIO and perluniintro man pages.
    # $notify_sender_templ = read_text('/var/amavis/notify_sender.txt');
    # $notify_virus_sender_templ= read_text('/var/amavis/notify_virus_sender.txt');
    # $notify_virus_admin_templ = read_text('/var/amavis/notify_virus_admin.txt');
    # $notify_virus_recips_templ= read_text('/var/amavis/notify_virus_recips.txt');
    # $notify_spam_sender_templ = read_text('/var/amavis/notify_spam_sender.txt');
    # $notify_spam_admin_templ = read_text('/var/amavis/notify_spam_admin.txt');
    # If notification template files are collectively available in some directory,
    # use read_l10n_templates which calls read_text for each known template.
    # read_l10n_templates('/etc/amavis/en_US');
    # Here is an overall picture (sequence of events) of how pieces fit together
    # (only virus controls are shown, spam controls work the same way):
    # bypass_virus_checks set for all recipients? ==> PASS
    # no viruses? ==> PASS
    # log virus if $log_templ is nonempty
    # quarantine if $virus_quarantine_to is nonempty
    # notify admin if $virus_admin (lookup) nonempty
    # notify recips if $warnvirusrecip and (recipient is local or $warn_offsite)
    # add address extensions for local recipients (when enabled)
    # send (non-)delivery notifications
    # to sender if DSN needed (BOUNCE) or ($warnvirussender and D_PASS)
    # virus_lovers or final_destiny==D_PASS ==> PASS
    # DISCARD (2xx) or REJECT (5xx) (depending on final_*_destiny)
    # Equivalent flow diagram applies for spam checks.
    # If a virus is detected, spam checking is skipped entirely.
    # The following symbolic constants can be used in *destiny settings:
    # D_PASS mail will pass to recipients, regardless of bad contents;
    # D_DISCARD mail will not be delivered to its recipients, sender will NOT be
    # notified. Effectively we lose mail (but will be quarantined
    # unless disabled). Not a decent thing to do for a mailer.
    # D_BOUNCE mail will not be delivered to its recipients, a non-delivery
    # notification (bounce) will be sent to the sender by amavisd-new;
    # Exception: bounce (DSN) will not be sent if a virus name matches
    # $viruses_that_fake_sender_re, or to messages from mailing lists
    # (Precedence: bulk|list|junk);
    # D_REJECT mail will not be delivered to its recipients, sender should
    # preferably get a reject, e.g. SMTP permanent reject response
    # (e.g. with milter), or non-delivery notification from MTA
    # (e.g. Postfix). If this is not possible (e.g. different recipients
    # have different tolerances to bad mail contents and not using LMTP)
    # amavisd-new sends a bounce by itself (same as D_BOUNCE).
    # Notes:
    # D_REJECT and D_BOUNCE are similar, the difference is in who is responsible
    # for informing the sender about non-delivery, and how informative
    # the notification can be (amavisd-new knows more than MTA);
    # With D_REJECT, MTA may reject original SMTP, or send DSN (delivery status
    # notification, colloquially called 'bounce') - depending on MTA;
    # Best suited for sendmail milter, especially for spam.
    # With D_BOUNCE, amavisd-new (not MTA) sends DSN (can better explain the
    # reason for mail non-delivery, but unable to reject the original
    # SMTP session). Best suited to reporting viruses, and for Postfix
    # and other dual-MTA setups, which can't reject original client SMTP
    # session, as the mail has already been enqueued.
    $final_virus_destiny = D_BOUNCE; # (defaults to D_BOUNCE)
    $final_banned_destiny = D_BOUNCE; # (defaults to D_BOUNCE)
    $final_spam_destiny = D_PASS; # (defaults to D_REJECT)
    $final_bad_header_destiny = D_PASS; # (defaults to D_PASS), D_BOUNCE suggested
    # Alternatives to consider for spam:
    # - use D_PASS if clients will do filtering based on inserted mail headers;
    # - use D_DISCARD, if kill_level is set safely high;
    # - use D_BOUNCE instead of D_REJECT if not using milter;
    # There are no sensible alternatives to D_BOUNCE for viruses, but consider:
    # - use D_PASS (or virus_lovers) and $warnvirussender=1 to deliver viruses;
    # - use D_REJECT instead of D_BOUNCE if using milter and under heavy
    # virus storm;
    # Don't bother to set both D_DISCARD and $warn*sender=1, it will get mapped
    # to D_BOUNCE.
    # The separation of *_destiny values into D_BOUNCE, D_REJECT, D_DISCARD
    # and D_PASS made settings $warnvirussender and $warnspamsender only still
    # useful with D_PASS.
    # The following $warn*sender settings are ONLY used when mail is
    # actually passed to recipients ($final_*_destiny=D_PASS, or *_lovers*).
    # Bounces or rejects produce non-delivery status notification anyway.
    # Notify virus sender?
    #$warnvirussender = 1; # (defaults to false (undef))
    # Notify spam sender?
    #$warnspamsender = 1; # (defaults to false (undef))
    # Notify sender of banned files?
    #$warnbannedsender = 1; # (defaults to false (undef))
    # Notify sender of syntactically invalid header containing non-ASCII characters?
    #$warnbadhsender = 1; # (defaults to false (undef))
    # Notify virus (or banned files) RECIPIENT?
    # (not very useful, but some policies demand it)
    #$warnvirusrecip = 1; # (defaults to false (undef))
    #$warnbannedrecip = 1; # (defaults to false (undef))
    # Notify also non-local virus/banned recipients if $warn*recip is true?
    # (including those not matching local_domains*)
    #$warn_offsite = 1; # (defaults to false (undef), i.e. only notify locals)
    # Treat envelope sender address as unreliable and don't send sender
    # notification / bounces if name(s) of detected virus(es) match the list.
    # Note that virus names are supplied by external virus scanner(s) and are
    # not standardized, so virus names may need to be adjusted.
    # See README.lookups for syntax.
    $viruses_that_fake_sender_re = new_RE(
    qr'nimda|hybris|klez|bugbear|yaha|braid|sobig|fizzer|palyh|peido|holar'i );
    # where to send ADMIN VIRUS NOTIFICATIONS (should be a fully qualified address)
    # - the administrator address may be a simple fixed e-mail address (a scalar),
    # or may depend on the SENDER address (e.g. its domain), in which case
    # a ref to a hash table can be specified (specify lower-cased keys,
    # dot is a catchall, see README.lookups).
    # Empty or undef lookup disables virus admin notifications.
    $virus_admin = '[email protected]';
    # $virus_admin = undef; # do not send virus admin notifications (default)
    # $virus_admin = {'not.example.com' => '', '.' => '[email protected]'};
    # $virus_admin = '[email protected]';
    # equivalent to $virus_admin, but for spam admin notifications:
    #$spam_admin = '[email protected]';# $spam_admin = undef; # do not send spam admin notifications (default)
    # $spam_admin = {'not.example.com' => '', '.' => '[email protected]'};
    #advanced example, using a hash lookup table:
    # - $virus_admin = {
    # '[email protected]' => '[email protected]',
    # '.sub1.example.com' => '[email protected]',
    # '.sub2.example.com' => '', # don't send admin notifications
    # 'a.sub3.example.com' => '[email protected]',
    # '.sub3.example.com' => '[email protected]',
    # '.example.com' => '[email protected]', # catchall for our virus senders
    # '.' => '[email protected]', # catchall for the rest
    # whom notification reports are sent from (ENVELOPE SENDER);
    # may be a null reverse path, or a fully qualified address:
    # (admin and recip sender addresses default to $mailfrom
    # for compatibility, which in turn defaults to undef (empty) )
    # If using strings in double quotes, don't forget to quote @, i.e. \@
    $mailfrom_notify_admin = "virusalert\@$mydomain";
    $mailfrom_notify_recip = "virusalert\@$mydomain";
    $mailfrom_notify_spamadmin = "spam.police\@$mydomain";
    # 'From' HEADER FIELD for sender and admin notifications.
    # This should be a replyable address, see rfc1894. Not to be confused
    # with $mailfrom_notify_sender, which is the envelope address and
    # should be empty (null reverse path) according to rfc2821.
    # $hdrfrom_notify_sender = "amavisd-new <postmaster\@$mydomain>";
    # $hdrfrom_notify_sender = 'amavisd-new <[email protected]>';
    # (defaults to: "amavisd-new <postmaster\@$myhostname>")
    # $hdrfrom_notify_admin = $mailfrom_notify_admin;
    # (defaults to: $mailfrom_notify_admin)
    # $hdrfrom_notify_spamadmin = $mailfrom_notify_spamadmin;
    # (defaults to: $mailfrom_notify_spamadmin)
    # whom quarantined messages appear to be sent from (envelope sender)
    $mailfrom_to_quarantine = undef; # original sender if undef, or set explicitly
    # (default is undef)
    # Location to put infected mail into: (applies to 'local:' quarantine method)
    # empty for not quarantining, may be a file (mailbox),
    # or a directory (no trailing slash)
    # (the default value is undef, meaning no quarantine)
    $QUARANTINEDIR = '/var/virusmails';
    #$virus_quarantine_method = "local:virus-%i-%n"; # default
    #$spam_quarantine_method = "local:spam-%b-%i-%n"; # default
    #use the new 'bsmtp:' method as an alternative to the default 'local:'
    #$virus_quarantine_method = "bsmtp:$QUARANTINEDIR/virus-%i-%n.bsmtp";
    #$spam_quarantine_method = "bsmtp:$QUARANTINEDIR/spam-%b-%i-%n.bsmtp";
    # When using the 'local:' quarantine method (default), the following applies:
    # A finer control of quarantining is available through variable
    # $virus_quarantine_to/$spam_quarantine_to. It may be a simple scalar string,
    # or a ref to a hash lookup table, or a regexp lookup table object,
    # which makes possible to set up per-recipient quarantine addresses.
    # The value of scalar $virus_quarantine_to/$spam_quarantine_to (or a
    # per-recipient lookup result from the hash table %$virus_quarantine_to)
    # is/are interpreted as follows:
    # VARIANT 1:
    # empty or undef disables quarantine;
    # VARIANT 2:
    # a string NOT containg an '@';
    # amavisd will behave as a local delivery agent (LDA) and will quarantine
    # viruses to local files according to hash %local_delivery_aliases (pseudo
    # aliases map) - see subroutine mail_to_local_mailbox() for details.
    # Some of the predefined aliases are 'virus-quarantine' and 'spam-quarantine'.
    # Setting $virus_quarantine_to ($spam_quarantine_to) to this string will:
    # * if $QUARANTINEDIR is a directory, each quarantined virus will go
    # to a separate file in the $QUARANTINEDIR directory (traditional
    # amavis style, similar to maildir mailbox format);
    # * otherwise $QUARANTINEDIR is treated as a file name of a Unix-style
    # mailbox. All quarantined messages will be appended to this file.
    # Amavisd child process must obtain an exclusive lock on the file during
    # delivery, so this may be less efficient than using individual files
    # or forwarding to MTA, and it may not work across NFS or other non-local
    # file systems (but may be handy for pickup of quarantined files via IMAP
    # for example);
    # VARIANT 3:
    # any email address (must contain '@').
    # The e-mail messages to be quarantined will be handed to MTA
    # for delivery to the specified address. If a recipient address local to MTA
    # is desired, you may leave the domain part empty, e.g. 'infected@', but the
    # '@' character must nevertheless be included to distinguish it from variant 2.
    # This method enables more refined delivery control made available by MTA
    # (e.g. its aliases file, other local delivery agents, dealing with
    # privileges and file locking when delivering to user's mailbox, nonlocal
    # delivery and forwarding, fan-out lists). Make sure the mail-to-be-quarantined
    # will not be handed back to amavisd for checking, as this will cause a loop
    # (hopefully broken at some stage)! If this can be assured, notifications
    # will benefit too from not being unecessarily virus-scanned.
    # By default this is safe to do with Postfix and Exim v4 and dual-sendmail
    # setup, but probably not safe with sendmail milter interface without
    # precaution.
    # (the default value is undef, meaning no quarantine)
    #$virus_quarantine_to = '[email protected]'; # traditional local quarantine
    #$virus_quarantine_to = 'infected@'; # forward to MTA for delivery
    #$virus_quarantine_to = "virus-quarantine\@$mydomain"; # similar
    #$virus_quarantine_to = '[email protected]'; # similar
    #$virus_quarantine_to = undef; # no quarantine
    #$virus_quarantine_to = new_RE( # per-recip multiple quarantines
    # [qr'^user@example\.com$'i => 'infected@'],
    # [qr'^(.*)@example\.com$'i => 'virus-${1}@example.com'],
    # [qr'^(.*)(@[^@])?$'i => 'virus-${1}${2}'],
    # [qr/.*/ => 'virus-quarantine'] );
    # similar for spam
    # (the default value is undef, meaning no quarantine)
    #$spam_quarantine_to = '[email protected]';
    #$spam_quarantine_to = "spam-quarantine\@$mydomain";
    #$spam_quarantine_to = new_RE( # per-recip multiple quarantines
    # [qr'^(.*)@example\.com$'i => 'spam-${1}@example.com'],
    # [qr/.*/ => 'spam-quarantine'] );
    # In addition to per-recip quarantine, a by-sender lookup is possible. It is
    # similar to $spam_quarantine_to, but the lookup key is the sender address:
    #$spam_quarantine_bysender_to = undef; # dflt: no by-sender spam quarantine
    # Add X-Virus-Scanned header field to mail?
    $X_HEADER_TAG = 'X-Virus-Scanned'; # (default: undef)
    # Leave empty to add no header field # (default: undef)
    $X_HEADER_LINE = "by amavisd-new at $mydomain";
    $remove_existing_x_scanned_headers = 0; # leave existing X-Virus-Scanned alone
    #$remove_existing_x_scanned_headers= 1; # remove existing headers
    # (defaults to false)
    $remove_existing_spam_headers = 0; # leave existing X-Spam* headers alone
    #$remove_existing_spam_headers = 1; # remove existing spam headers if
    # spam scanning is enabled (default)
    # set $bypass_decode_parts to true if you only do spam scanning, or if you
    # have a good virus scanner that can deal with compression and recursively
    # unpacking archives by itself, and save amavisd the trouble.
    # Disabling decoding also causes banned_files checking to only see
    # MIME names and MIME content types, not the content classification types
    # as provided by the file(1) utility.
    # It is a double-edged sword, make sure you know what you are doing!
    #$bypass_decode_parts = 1; # (defaults to false)
    # don't trust this file type or corresponding unpacker for this file type,
    # keep both the original and the unpacked file
    # (lookup key is what file(1) utility returned):
    $keep_decoded_original_re = new_RE(
    qr'^(ASCII|text|uuencoded|xxencoded|binhex)'i,
    # Checking for banned MIME types and names. If any mail part matches,
    # the whole mail is rejected, much like the way viruses are handled.
    # A list in object $banned_filename_re can be defined to provide a list
    # of Perl regular expressions to be matched against each part's:
    # * Content-Type value (both declared and effective mime-type),
    # including the possible security risk content types
    # message/partial and message/external-body, as specified by rfc2046;
    # * declared (recommended) file names as specified by MIME subfields
    # Content-Disposition.filename and Content-Type.name, both in their
    # raw (encoded) form and in rfc2047-decoded form if applicable;
    # * file content type as guessed by 'file(1)' utility, both the raw result
    # from file(1), as well as short type name, classified into names such as
    # .asc, .txt, .html, .doc, .jpg, .pdf, .zip, .exe, ..., which is always
    # beginning with a dot - see subroutine determine_file_types().
    # This step is done only if $bypass_decode_parts is not true.
    # * leave $banned_filename_re undefined to disable these checks
    # (giving an empty list to new_RE() will also always return false)
    $banned_filename_re = new_RE(
    qr'\.[a-zA-Z][a-zA-Z0-9]{0,3}\.(vbs|pif|scr|bat|com|exe|dll)$'i, # double extension
    # qr'.\.(exe|vbs|pif|scr|bat|com)$'i, # banned extension - basic
    # qr'.\.(ade|adp|bas|bat|chm|cmd|com|cpl|crt|exe|hlp|hta|inf|ins|isp|js|
    # jse|lnk|mdb|mde|msc|msi|msp|mst|pcd|pif|reg|scr|sct|shs|shb|vb|
    # vbe|vbs|wsc|wsf|wsh)$'ix, # banned extension - long
    # qr'^\.(exe|zip|lha|tnef)$'i, # banned file(1) types
    # qr'^application/x-msdownload$'i, # banned MIME types
    # qr'^message/partial$'i, qr'^message/external-body$'i, # rfc2046
    # See http://support.microsoft.com/default.aspx?scid=kb;EN-US;q262631
    # and http://www.cknow.com/vtutor/vtextensions.htm
    # A little trick: a pattern qr'\.exe$' matches both a short type name '.exe',
    # as well as any file name which happens to end with .exe. If only matching
    # a file name is desired, but not the short name, a pattern qr'.\.exe$'i
    # or similar may be used, which requires that at least one character preceeds
    # the '.exe', and so it will never match short file types, which always start
    # with a dot.
    # Section V - Per-recipient and per-sender handling, whitelisting, etc.
    # %virus_lovers, @virus_lovers_acl and $virus_lovers_re lookup tables:
    # (these should be considered policy options, they do not disable checks,
    # see bypas*checks for that!)
    # Exclude certain RECIPIENTS from virus filtering by adding their lower-cased
    # envelope e-mail address (or domain only) to the hash %virus_lovers, or to
    # the access list @virus_lovers_acl - see README.lookups and examples.
    # Make sure the appropriate form (e.g. external/internal) of address
    # is used in case of virtual domains, or when mapping external to internal
    # addresses, etc. - this is MTA-specific.
    # Notifications would still be generated however (see the overall
    # picture above), and infected mail (if passed) gets additional header:
    # X-AMaViS-Alert: INFECTED, message contains virus: ...
    # (header not inserted with milter interface!)
    # NOTE (milter interface only): in case of multiple recipients,
    # it is only possible to drop or accept the message in its entirety - for all
    # recipients. If all of them are virus lovers, we'll accept mail, but if
    # at least one recipient is not a virus lover, we'll discard the message.
    # %bypass_virus_checks, @bypass_virus_checks_acl and $bypass_virus_checks_re
    # lookup tables:
    # (this is mainly a time-saving option, unlike virus_lovers* !)
    # Similar in concept to %virus_lovers, a hash %bypass_virus_checks,
    # access list @bypass_virus_checks_acl and regexp list $bypass_virus_checks_re
    # are used to skip entirely the decoding, unpacking and virus checking,
    # but only if ALL recipients match the lookup.
    # %bypass_virus_checks/@bypass_virus_checks_acl/$bypass_virus_checks_re
    # do NOT GUARANTEE the message will NOT be checked for viruses - this may
    # still happen when there is more than one recipient for a message, and
    # not all of them match these lookup tables. To guarantee virus delivery,
    # a recipient must also match %virus_lovers/@virus_lovers_acl lookups
    # (but see milter limitations above),
    # NOTE: it would not be clever to base virus checks on SENDER address,
    # since there are no guarantees that it is genuine. Many viruses
    # and spam messages fake sender address. To achieve selective filtering
    # based on the source of the mail (e.g. IP address, MTA port number, ...),
    # use mechanisms provided by MTA if available.
    # Similar to lookup tables controlling virus checking, there exist
    # spam scanning, banned names/types, and headers_checks control counterparts:
    # %spam_lovers, @spam_lovers_acl, $spam_lovers_re
    # %banned_files_lovers, @banned_files_lovers_acl, $banned_files_lovers_re
    # %bad_header_lovers, @bad_header_lovers_acl, $bad_header_lovers_re
    # and:
    # %bypass_spam_checks/@bypass_spam_checks_acl/$bypass_spam_checks_re
    # %bypass_banned_checks/@bypass_banned_checks_acl/$bypass_banned_checks_re
    # %bypass_header_checks/@bypass_header_checks_acl/$bypass_header_checks_re
    # See README.lookups for details about the syntax.
    # The following example disables spam checking altogether,
    # since it matches any recipient e-mail address (any address
    # is a subdomain of the top-level root DNS domain):
    # @bypass_spam_checks_acl = qw( . );
    # @bypass_header_checks_acl = qw( [email protected] );
    # @bad_header_lovers_acl = qw( [email protected] );
    # See README.lookups for further detail, and examples below.
    # $virus_lovers{lc("postmaster\@$mydomain")} = 1;
    # $virus_lovers{lc('[email protected]')} = 1;
    # $virus_lovers{lc('[email protected]')} = 1;
    # $virus_lovers{lc('some.user@')} = 1; # this recipient, regardless of domain
    # $virus_lovers{lc('[email protected]')} = 0; # never, even if domain matches
    # $virus_lovers{lc('example.com')} = 1; # this domain, but not its subdomains
    # $virus_lovers{lc('.example.com')}= 1; # this domain, including its subdomains
    #or:
    # @virus_lovers_acl = qw( [email protected] !lab.xxx.com .xxx.com yyy.org );
    # $bypass_virus_checks{lc('[email protected]')} = 1;
    # @bypass_virus_checks_acl = qw( some.ddd !butnot.example.com .example.com );
    # @virus_lovers_acl = qw( [email protected] );
    # $virus_lovers_re = new_RE( qr'(helpdesk|postmaster)@example\.com$'i );
    # $spam_lovers{lc("postmaster\@$mydomain")} = 1;
    # $spam_lovers{lc('[email protected]')} = 1;
    # $spam_lovers{lc('[email protected]')} = 1;
    # @spam_lovers_acl = qw( !.example.com );
    # $spam_lovers_re = new_RE( qr'^user@example\.com$'i );
    # don't run spam check for these RECIPIENT domains:
    # @bypass_spam_checks_acl = qw( d1.com .d2.com a.d3.com );
    # or the other way around (bypass check for all BUT these):
    # @bypass_spam_checks_acl = qw( !d1.com !.d2.com !a.d3.com . );
    # a practical application: don't check outgoing mail for spam:
    # @bypass_spam_checks_acl = ( "!.$mydomain", "." );
    # (a downside of which is that such mail will not count as ham in SA bayes db)
    # Where to find SQL server(s) and database to support SQL lookups?
    # A list of triples: (dsn,user,passw). (dsn = data source name)
    # Specify more than one for multiple (backup) SQL servers.
    # See 'man DBI', 'man DBD::mysql', 'DBD::Pg', ... for details.
    # @lookup_sql_dsn =
    # ( ['DBI:mysql:mail:host1', 'some-username1', 'some-password1'],
    # ['DBI:mysql:mail:host2', 'some-username2', 'some-password2'] );
    # ('mail' in the example is the database name, choose what you like)
    # With PostgreSQL the dsn (first element of the triple) may look like:
    # 'DBI:Pg:host=host1;dbname=mail'
    # The SQL select clause to fetch per-recipient policy settings.
    # The %k will be replaced by a comma-separated list of query addresses
    # (e.g. full address, domain only, catchall). Use ORDER, if there
    # is a chance that multiple records will match - the first match wins.
    # If field names are not unique (e.g. 'id'), the later field overwrites the
    # earlier in a hash returned by lookup, which is why we use '*,users.id'.
    # No need to uncomment the following assignment if the default is ok.
    # $sql_select_policy = 'SELECT *,users.id FROM users,policy'.
    # ' WHERE (users.policy_id=policy.id) AND (users.email IN (%k))'.
    # ' ORDER BY users.priority DESC';
    # The SQL select clause to check sender in per-recipient whitelist/blacklist
    # The first SELECT argument '?' will be users.id from recipient SQL lookup,
    # the %k will be sender addresses (e.g. full address, domain only, catchall).
    # The default value is:
    # $sql_select_white_black_list = 'SELECT wb FROM wblist,mailaddr'.
    # ' WHERE (rid=?) AND (sid=mailaddr.id) AND (mailaddr.email IN (%k))'.
    # ' ORDER BY mailaddr.priority DESC';
    # To disable SQL white/black list, set to undef (otherwise comment-out
    # the following statement, leaving it at the default value):
    $sql_select_white_black_list = undef; # undef disables SQL white/blacklisting
    # If you decide to pass viruses (or spam) to certain recipients using the
    # above lookup tables or using $final_virus_destiny=1, you can set
    # the variable $addr_extension_virus ($addr_extension_spam) to some
    # string, and the recipient address will have this string appended
    # as an address extension to the local-part of the address. This extension
    # can be used by final local delivery agent to place such mail in different
    # folders. Leave these two variables undefined or empty strings to prevent
    # appending address extensions. Setting has no effect on recipient which will
    # not be receiving viruses/spam. Recipients who do not match lookup tables
    # local_domains* are not affected.
    # LDAs usually default to stripping away address extension if no special
    # handling is specified, so having this option enabled normally does no harm,
    # provided the $recipients_delimiter matches the setting on the final
    # MTA's LDA.
    # $addr_extension_virus = 'virus'; # (default is undef, same as empty)
    # $addr_extension_spam = 'spam'; # (default is undef, same as empty)
    # $addr_extension_banned = 'banned'; # (default is undef, same as empty)
    # Delimiter between local part of the recipient address and address extension
    # (which can optionally be added, see variables $addr_extension_virus and
    # $addr_extension_spam). E.g. recipient address <[email protected]> gets changed
    # to <[email protected]>.
    # Delimiter should match equivalent (final) MTA delimiter setting.
    # (e.g. for Postfix add 'recipient_delimiter = +' to main.cf)
    # Setting it to an empty string or to undef disables this feature
    # regardless of $addr_extension_virus and $addr_extension_spam settings.
    $recipient_delimiter = '+'; # (default is '+')
    # true: replace extension; false: append extension
    # $replace_existing_extension = 1; # (default is false)
    # Affects matching of localpart of e-mail addresses (left of '@')
    # in lookups: true = case sensitive, false = case insensitive
    $localpart_is_case_sensitive = 0; # (default is false)
    # ENVELOPE SENDER WHITELISTING / BLACKLISTING - GLOBAL (RECIPIENT-INDEPENDENT)
    # WHITELISTING: use ENVELOPE SENDER lookups to ENSURE DELIVERY from whitelisted
    # senders even if the message is recognized as spam. Effectively, for the
    # specified senders, message RECIPIENTS temporarily become 'spam_lovers', with
    # further processing being the same as otherwise specified for spam lovers.
    # It does not turn off inserting spam-related headers, if they are enabled.
    # BLACKLISTING: messages from specified SENDERS are DECLARED SPAM.
    # Effectively, for messages from blacklisted senders, spam level
    # is artificially pushed high, and the normal spam processing applies,
    # resulting in 'X-Spam-Flag: YES', high 'X-Spam-Level' bar and other usual
    # reactions to spam, including possible rejection. If the message nevertheless
    # still passes (e.g. for spam loving recipients), it is tagged as BLACKLISTED
    # in the 'X-Spam-Status' header field, but the reported spam value and
    # set of tests in this report header field (if available from SpamAssassin,
    # which may have not been called) is not adjusted.
    # A sender may be both white- and blacklisted at the same time,
    # settings are independent. For example, being both white- and blacklisted,
    # message is delivered to recipients, but is tagged as spam.
    # If ALL recipients of the message either white- or blacklist the sender,
    # spam scanning (calling the SpamAssassin) is bypassed, saving on time.
    # The following variables (lookup tables) are available, with the semantics
    # and syntax as specified in README.lookups:
    # %whitelist_sender, @whitelist_sender_acl, $whitelist_sender_re
    # %blacklist_sender, @blacklist_sender_acl, $blacklist_sender_re
    # SOME EXAMPLES:
    #ACL:
    # @whitelist_sender_acl = qw( .example.com );
    # @whitelist_sender_acl = ( ".$mydomain" ); # $mydomain and its subdomains
    # NOTE: This is not a reliable way of turning off spam checks for
    # locally-originating mail, as sender address can easily be faked.
    # To reliably avoid spam-scanning outgoing mail,
    # use @bypass_spam_checks_acl .
    #RE:
    # $whitelist_sender_re = new_RE(
    # qr'^postmaster@.*\bexample\.com$'i,
    # qr'^owner-[^@]*@'i, qr'-request@'i,
    # qr'\.example\.com$'i );
    $blacklist_sender_re = new_RE(
    qr'^(bulkmail|offers|cheapbenefits|earnmoney|foryou|greatcasino)@'i,
    qr'^(investments|lose_weight_today|market.alert|money2you|MyGreenCard)@'i,
    qr'^(new\.tld\.registry|opt-out|opt-in|optin|saveonlsmoking2002k)@'i,
    qr'^(specialoffer|specialoffers|stockalert|stopsnoring|wantsome)@'i,
    qr'^(workathome|yesitsfree|your_friend|greatoffers)@'i,
    qr'^(inkjetplanet|marketopt|MakeMoney)\d*@'i,
    #HASH lookup variant:
    # NOTE: Perl operator qw splits its argument string by whitespace
    # and produces a list. This means that addresses can not contain
    # whitespace, and there is no provision for comments within the string.
    # You can use the normal Perl list syntax if you have special requirements,
    # e.g. map {...} ('one user@bla', '.second.com'), or use read_hash to read
    # addresses from a file.
    # a hash lookup table can be read from a file,
    # one address per line, comments and empty lines are permitted:
    # read_hash(\%whitelist_sender, '/var/amavis/whitelist_sender');
    # ... or set directly:
    # $whitelist_sender{''} = 1; # don't spam-check MTA bounces
    map { $whitelist_sender{lc($_)}=1 } (qw(
    [email protected]
    [email protected]
    [email protected]
    [email protected]
    [email protected]
    [email protected]
    [email protected]
    [email protected]
    [email protected]
    [email protected]
    [email protected]
    [email protected]
    [email protected]
    [email protected]
    [email protected]
    [email protected]
    [email protected]
    [email protected]
    [email protected]
    [email protected]
    [email protected]
    [email protected]
    [email protected]
    returns.groups.yahoo.com
    # ENVELOPE SENDER WHITELISTING / BLACKLISTING - PER-RECIPIENT
    # The same semantics as for global white/blacklisting applies, but this
    # time each recipient (or its domain, or subdomain, ...) can be given
    # an individual lookup table for matching senders. The per-recipient lookups
    # override the global lookups, which serve as a fallback default.
    # Specify a two-level lookup table: the key for the outer table is recipient,
    # and the result should be an inner lookup table (hash or ACL or RE),
    # where the key used will be the sender.
    #$per_recip_blacklist_sender_lookup_tables = {
    # '[email protected]'=>new_RE(qr'^(inkjetplanet|marketopt|MakeMoney)\d*@'i),
    # '[email protected]'=>[qw( [email protected],org .d2.example,org )],
    #$per_recip_whitelist_sender_lookup_tables = {
    # '[email protected]' => [qw( [email protected] .other.example.org )],
    # '.my1.example.com' => [qw( !foe.other.example,org .other.example,org )],
    # '.my2.example.com' => read_hash('/var/amavis/my2-wl.dat'),
    # 'abuse@' => { 'postmaster@'=>1,
    # '[email protected]'=>1, '[email protected]'=>1 },
    # Section VI - Resource limits
    # Sanity limit to the number of allowed recipients per SMTP transaction
    # $smtpd_recipient_limit = 1000; # (default is 1000)
    # Resource limitations to protect against mail bombs (e.g. 42.zip)
    # Maximum recursion level for extraction/decoding (0 or undef disables limit)
    $MAXLEVELS = 14; # (default is undef, no limit)
    # Maximum number of extracted files (0 or undef disables the limit)
    $MAXFILES = 1500; # (default is undef, no limit)
    # For the cumulative total of all decoded mail parts we set max storage size
    # to defend against mail bombs. Even though parts may be deleted (replaced
    # by decoded text) during decoding, the size they occupied is _not_ returned
    # to the quota pool.
    # Parameters to storage quota formula for unpacking/decoding/decompressing
    # Formula:
    # quota = max($MIN_EXPANSION_QUOTA,
    # $mail_size*$MIN_EXPANSION_FACTOR,
    # min($MAX_EXPANSION_QUOTA, $mail_size*$MAX_EXPANSION_FACTOR))
    # In plain words (later condition overrules previous ones):
    # allow MAX_EXPANSION_FACTOR times initial mail size,
    # but not more than MAX_EXPANSION_QUOTA,
    # but not less than MIN_EXPANSION_FACTOR times initial mail size,
    # but never less than MIN_EXPANSION_QUOTA
    $MIN_EXPANSION_QUOTA = 100*1024; # bytes (default undef, not enforced)
    $MAX_EXPANSION_QUOTA = 300*1024*1024; # bytes (default undef, not enforced)
    $MIN_EXPANSION_FACTOR = 5; # times original mail size (must be specified)
    $MAX_EXPANSION_FACTOR = 500; # times original mail size (must be specified)
    # Section VII - External programs, virus scanners
    # Specify a path string, which is a colon-separated string of directories
    # (no trailing slashes!) to be assigned to the environment variable PATH
    # and to serve for locating external programs below.
    # NOTE: if $daemon_chroot_dir is nonempty, the directories will be
    # relative to the chroot directory specified;
    $path = '/usr/local/sbin:/usr/local/bin:/usr/sbin:/sbin:/usr/bin:/bin';
    # Specify one string or a search list of strings (first match wins).
    # The string (or: each string in a list) may be an absolute path,
    # or just a program name, to be located via $path;
    # Empty string or undef (=default) disables the use of that external program.
    # Optionally command arguments may be specified - only the first substring
    # up to the whitespace is used for file searching.
    $file = 'file'; # file(1) utility; use 3.41 or later to avoid vulnerability
    $gzip = 'gzip';
    $bzip2 = 'bzip2';
    $lzop = 'lzop';
    $uncompress = ['uncompress', 'gzip -d', 'zcat'];
    $unfreeze = ['unfreeze', 'freeze -d', 'melt', 'fcat'];
    $arc = ['nomarch', 'arc'];
    $unarj = ['arj', 'unarj']; # both can extract, same options
    $unrar = ['rar', 'unrar']; # both can extract, same options
    $zoo = 'zoo';
    $lha = 'lha';
    $cpio = 'cpio';
    # SpamAssassin settings
    # $sa_local_tests_only is passed to Mail::SpamAssassin::new as a value
    # of the option local_tests_only. See Mail::SpamAssassin man page.
    # If set to 1, no tests that require internet access will be performed.
    $sa_local_tests_only = 1; # (default: false)
    #$sa_auto_whitelist = 1; # turn on AWL (default: false)
    $sa_mail_body_size_limit = 64*1024; # don't waste time on SA if mail is larger
    # (less than 1% of spam is > 64k)
    # default: undef, no limitations
    # default values, can be overridden by more specific lookups, e.g. SQL
    $sa_tag_level_deflt = -999; # add spam info headers if at, or above that level
    $sa_tag2_level_deflt = 3.0; # add 'spam detected' headers at that level
    $sa_kill_level_deflt = 22.0;
    #$sa_kill_level_deflt = $sa_tag2_level_deflt; # triggers spam evasive actions
    # at or above that level: bounce/reject/drop,
    # quarantine, and adding mail address extension
    # The $sa_tag_level_deflt, $sa_tag2_level_deflt and $sa_kill_level_deflt
    # may also be hashrefs to hash lookup tables, to make static per-recipient
    # settings possible without having to resort to SQL or LDAP lookups.
    # a quick reference:
    # tag_level controls adding the X-Spam-Status and X-Spam-Level headers,
    # tag2_level controls adding 'X-Spam-Flag: YES', and editing Subject,
    # kill_level controls 'evasive actions' (reject, quarantine, extensions);
    # it only makes sense to maintain the relationship:
    # tag_level <= tag2_level <= kill_level
    # string to prepend to Subject header field when message exceeds tag2 level
    $sa_spam_subject_tag = '*** JUNK MAIL ***'; # (defaults to undef, disables)
    # (only seen when spam is not to be rejected
    # and recipient is in local_domains*)
    $sa_spam_modifies_subj = 1; # may be a ref to a lookup table, default is true
    # Example: modify Subject for all local recipients except [email protected]
    #$sa_spam_modifies_subj = [qw( [email protected] . )];
    # @av_scanners is a list of n-tuples, where fields semantics is:
    # 1. av scanner plain name, to be used in log and reports;
    # 2. scanner program name; this string will be submitted to subroutine
    # find_external_programs(), which will try to find the full program
    # path name; if program is not found, this scanner is disabled.
    # Besides a simple string (full program path name or just the basename
    # to be looked for in PATH), this may be an array ref of alternative
    # program names or full paths - the first match in the list will be used;
    # As a special case for more complex scanners, this field may be
    # a subroutine reference, and the whole n-tuple is passed to it as args.
    # 3. command arguments to be given to the scanner program;
    # a substring {} will be replaced by the directory name to be scanned,
    # i.e. "$tempdir/parts"
    # 4. an array ref of av scanner exit status values, or a regexp (to be
    # matched against scanner output), indicating NO VIRUSES found;
    # 5. an array ref of av scanner exit status values, or a regexp (to be
    # matched against scanner output), indicating VIRUSES WERE FOUND;
    # Note: the virus match prevails over a 'not found' match, so it is safe
    # even if 4. matches for viruses too;
    # 6. a regexp (to be matched against scanner output), returning a list
    # of virus names found.
    # 7. and 8.: (optional) subroutines to be executed before and after scanner
    # (e.g. to set environment or current directory);
    # see examples for these at KasperskyLab AVP and Sophos sweep.
    # NOTES:
    # - NOT DEFINING @av_scanners (e.g. setting it to empty list, or deleting the
    # whole assignment) TURNS OFF LOADING AND COMPILING OF THE ANTIVIRUS CODE
    # (which can be handy if all you want to do is spam scanning);
    # - the order matters: although _all_ available entries from the list are
    # always tried regardless of their verdict, scanners are run in the order
    # specified: the report from the first one detecting a virus will be used
    # (providing virus names and scanner output); REARRANGE THE ORDER TO WILL;
    # - it doesn't hurt to keep an unused command line scanner entry in the list
    # if the program can not be found; the path search is only performed once
    # during the program startup;
    # CORROLARY: to disable a scanner that _does_ exist on your system,
    # comment out its entry or use undef or '' as its program name/path
    # (second parameter). An example where this is almost a must: disable
    # Sophos 'sweep' if you have its daemonized version Sophie or SAVI-Perl
    # (same for Trophie/vscan, and clamd/clamscan), or if another unrelated
    # program happens to have a name matching one of the entries ('sweep'
    # again comes to mind);
    # - it DOES HURT to keep unwanted entries which use INTERNAL SUBROUTINES
    # for interfacing (where the second parameter starts with \&).
    # Keeping such entry and not having a corresponding virus scanner daemon
    # causes an unnecessary connection attempt (which eventually times out,
    # but it wastes precious time). For this reason the daemonized entries
    # are commented in the distribution - just remove the '#' where needed.
    @av_scanners = (
    # ### http://www.vanja.com/tools/sophie/
    # ['Sophie',
    # \&ask_daemon, ["{}/\n", '/var/run/sophie'],
    # qr/(?x)^ 0+ ( : | [\000\r\n]* $)/, qr/(?x)^ 1 ( : | [\000\r\n]* $)/,
    # qr/(?x)^ [-+]? \d+ : (.*?) [\000\r\n]* $/ ],
    # ### http://www.csupomona.edu/~henson/www/projects/SAVI-Perl/
    # ['Sophos SAVI', \&sophos_savi ],
    # ### http://clamav.elektrapro.com/
    # ['Clam Antivirus-clamd',
    # \&ask_daemon, ["CONTSCAN {}\n", '/var/amavis/clamd'],
    # qr/\bOK$/, qr/\bFOUND$/,
    # qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],
    # # NOTE: run clamd under the same user as amavisd,
    # # match the socket name in clamav.conf to the socket name in this entry
    # ### http://www.openantivirus.org/
    # ['OpenAntiVirus ScannerDaemon (OAV)',
    # \&ask_daemon, ["SCAN {}\n", '127.0.0.1:8127'],
    # qr/^OK/, qr/^FOUND: /, qr/^FOUND: (.+)/ ],
    # ### http://www.vanja.com/tools/trophie/
    # ['Trophie',
    # \&ask_daemon, ["{}/\n", '/var/run/trophie'],
    # qr/(?x)^ 0+ ( : | [\000\r\n]* $)/, qr/(?x)^ 1 ( : | [\000\r\n]* $)/,
    # qr/(?x)^ [-+]? \d+ : (.*?) [\000\r\n]* $/ ],
    # ### http://www.f-prot.com/
    # ['FRISK F-Prot Daemon',
    # \&ask_daemon,
    # ["GET {}/*?-dumb%20-archive HTTP/1.0\r\n\r\n",
    # ['127.0.0.1:10200','127.0.0.1:10201','127.0.0.1:10202',
    # '127.0.0.1:10203','127.0.0.1:10204'] ],
    # qr/(?i)<summary[^>]*>clean<\/summary>/,
    # qr/(?i)<summary[^>]*>infected<\/summary>/,
    # qr/(?i)<name>(.+)<\/name>/ ],
    ['KasperskyLab AntiViral Toolkit Pro (AVP)', ['avp','kavscanner'],
    "-* -P -B -Y -O- {}", [0,3,8], [2,4], # any use for -A -K ?
    qr/infected: (.+)/,
    sub {chdir('/opt/AVP') or die "Can't chdir to AVP: $!"},
    sub {chdir($TEMPBASE) or die "Can't chdir back to $TEMPBASE $!"},
    ['KasperskyLab AVPDaemonClient',
    [ '/opt/AVP/kavdaemon', 'kavdaemon',
    '/opt/AVP/AvpDaemonClient', 'AvpDaemonClient',
    '/opt/AVP/AvpTeamDream', 'AvpTeamDream',
    '/opt/AVP/avpdc', 'avpdc' ],
    '{}', [0,8], [3,4,5,6], qr/infected: ([^\r\n]+)/ ],
    # change the startup-script in /etc/init.d/kavd to:
    # DPARMS="-I0 -Y -* /var/amavis"
    # adjusting /var/amavis above to match your $TEMPBASE.
    # NOTE: cd /opt/AVP/DaemonClients; configure; cd Sample; make
    # cp AvpDaemonClient /opt/AVP/
    ### http://www.hbedv.com/ or http://www.centralcommand.com/
    ['H+BEDV AntiVir or CentralCommand Vexira Antivirus',
    ['antivir','vexira'],
    '--allfiles -noboot -nombr -rs -s -z {}', [0], qr/ALERT:|VIRUS:/,
    qr/(?x)^\s* (?: ALERT: \s* (?: \[ | [^']* ' ) |
    (?i) VIRUS:\ .*?\ virus\ '?) ( [^\]\s']+ )/ ],
    # NOTE: remove the -z if you only have a demo version
    ### http://www.commandsoftware.com/
    ['Command AntiVirus for Linux', 'csav',
    '-all -archive -packed {}', [50], [51,52,53],
    qr/Infection: (.+)/ ],
    ### http://www.symantec.com/
    ['Symantec CarrierScan via Symantec CommandLineScanner',
    ['cscmdline','savsecls'],
    '-a scan -i 1 -v -s 127.0.0.1:7777 {}',
    qr/Files Infected: 0/, qr/^Infected: /,
    qr/Info:\s+(.+)/ ],
    ### http://drweb.imshop.de/
    ['DrWeb Antivirus for Linux/FreeBSD/Solaris', 'drweb',
    '-al -ar -fm -go -ha -ml -ot -sd -up {}',
    [0], [1], sub {('no-name')} ],
    ### http://www.f-secure.com/products/anti-virus/
    ['F-Secure Antivirus', 'fsav',
    '--dumb --archive {}', [0], [3,8],
    qr/(?:infection|Infected): (.+)/ ],
    ['CAI InoculateIT', 'inocucmd',
    '-sec -nex {}', [0], [100],
    qr/was infected by virus (.+)/ ],
    ['MkS_Vir for Linux (beta)', ['mks32','mks'],
    '-s {}/*', [0], [1,2],
    qr/--[ \t]*(.+)/ ],
    ['MkS_Vir daemon',
    'mksscan', '-s -q {}', [0], [1..7],
    qr/^... (\S+)/ ],
    ### http://www.nod32.com/
    ['ESET Software NOD32', 'nod32',
    '-all -subdir+ {}', [0], [1,2],
    qr/^.+? - (.+?)\s*(?:backdoor|joke|trojan|virus|worm)/ ],
    ### http://www.nod32.com/
    ['ESET Software NOD32 - Client/Server Version', 'nod32cli',
    '-a -r -d recurse --heur standard {}', [0], [10,11],
    qr/^\S+\s+infected:\s+(.+)/ ],
    ### http://www.norman.com/products_nvc.shtml
    ['Norman Virus Control v5 / Linux', 'nvccmd',
    '-c -l:0 -s -u {}', [0], [1],
    qr/(?i).* virus in .* -> \'(.+)\'/ ],
    ### http://www.pandasoftware.com/
    ['Panda Antivirus for Linux', ['pavcl','pavc'],
    '-aut -aex -heu -cmp -nor -nso -eng {}',
    qr/Number of files infected\.*: 0(?!\d)/,
    qr/Number of files infected\.*: 0*[1-9]/,
    qr/Found virus :\s*(\S+)/ ],
    # Check your RAV license terms before fiddling with the following two lines!
    # ['GeCAD RAV AntiVirus 8', 'ravav',
    # '--all --archive --mail {}', [1], [2,3,4,

    You are welcome. I'm glad you got it back up.
    (1) You say you did the symbolic link. I will assume this is set correctly; it's very important that it is.
    (2) I don't know what you mean by "Been feeding the [email protected] for several weeks now, 700 emails each day at least." After the initial training period, SpamAssassin doesn't learn from mail it has already processed correctly. At this point, you only need to teach SpamAssassin when it is wrong. [email protected] should only be getting spam that is being passed as clean. Likewise, [email protected] should only be getting legitimate mail that is being flagged as junk. You are redirecting mail to both [email protected] and [email protected] ... right? SpamAssassin needs both.
    (3) Next, as I said before, you need to implement those "Frontline spam defense for Mac OS X Server." Once you have that done and issue "postfix reload" you can look at your SMTP log in Server Admin and watch as Postfix blocks one piece of junk mail after another. It's kind of cool.
    (4) Add some SARE rules:
    Visit http://www.rulesemporium.com/rules.htm and download the following rules:
    70sareadult.cf
    70saregenlsubj0.cf
    70sareheader0.cf
    70sarehtml0.cf
    70sareobfu0.cf
    70sareoem.cf
    70sarespoof.cf
    70sarestocks.cf
    70sareunsub.cf
    72sare_redirectpost
    Visit http://www.rulesemporium.com/other-rules.htm and download the following rules:
    backhair.cf
    bogus-virus-warnings.cf
    chickenpox.cf
    weeds.cf
    Copy these rules to /etc/mail/spamassassin/
    Then stop and restart mail services.
    There are other things you can do, and you'll find differing opinions about such things. In general, I think implementing the "Frontline spam defense for Mac OS X Server" and adding the SARE rules will help a lot. Good luck!

  • Spry Menu Bar disappears absolute position

    Hello all this is my first time posting on this site so bear with me. I have a semi-transperant spry menu bar that i inserted into the header div, over an image. I moved the menu bar -38px, when the position is set to relative the menu bar is visible, however the old position of the menu bar has a blank white space there. I think this is due to the relative position property. When i change it to absolute the whole menu bar disappears? http://www.brightlikethesun.com/index2.html (the position is back to relative to show the menu bar and also background for header is blue to show the space) 
    CSS
    /* SpryMenuBarHorizontal.css - version 0.6 - Spry Pre-Release 1.6.1 */
    /* Copyright (c) 2006. Adobe Systems Incorporated. All rights reserved. */
    LAYOUT INFORMATION: describes box model, positioning, z-order
    /* The outermost container of the Menu Bar, an auto width box with no margin or padding */
    ul.MenuBarHorizontal
    width: 100%;
    margin: auto;
    position: relative;
    top: -38px;
    font-family: "Lucida Console", Monaco, monospace;
    opacity: 0.7;
    filter: alpha(opacity=60); /* For IE8 and earlier */
    margin-right: auto;
    margin-left: auto;
    /* Set the active Menu Bar with this class, currently setting z-index to accomodate IE rendering bug: http://therealcrisp.xs4all.nl/meuk/IE-zindexbug.html */
    ul.MenuBarActive
    z-index: 1000;
    /* Menu item containers, position children relative to this container and are a fixed width */
    ul.MenuBarHorizontal li
    margin: 0;
    padding: 0;
    list-style-type: none;
    font-size: 100%;
    position: relative;
    text-align: left;
    cursor: pointer;
    width: 20%;
    float: left;
    /* Submenus should appear below their parent (top: 0) with a higher z-index, but they are initially off the left side of the screen (-1000em) */
    ul.MenuBarHorizontal ul
    margin: 0;
    padding: 0;
    list-style-type: none;
    font-family:Arial, Helvetica, sans-serif;
    font-size: 70%;
    z-index: 1020;
    cursor: default;
    width: 50em;
    position: absolute;
    left: -1000em;
    /* Submenu that is showing with class designation MenuBarSubmenuVisible, we set left to auto so it comes onto the screen below its parent menu item */
    ul.MenuBarHorizontal ul.MenuBarSubmenuVisible
    left: auto;
    /* Menu item containers are same fixed width as parent */
    ul.MenuBarHorizontal ul li
    width: 50em;
    /* Submenus should appear slightly overlapping to the right (95%) and up (-5%) */
    ul.MenuBarHorizontal ul ul
    position: absolute;
    margin: -5% 0 0 95%;
    /* Submenu that is showing with class designation MenuBarSubmenuVisible, we set left to 0 so it comes onto the screen */
    ul.MenuBarHorizontal ul.MenuBarSubmenuVisible ul.MenuBarSubmenuVisible
    left: auto;
    top: 0;
    DESIGN INFORMATION: describes color scheme, borders, fonts
    /* Submenu containers have borders on all sides */
    ul.MenuBarHorizontal ul
    border: 1px solid #CCC;
    /* Menu items are a light gray block with padding and no text decoration */
    ul.MenuBarHorizontal a
    display: block;
    cursor: pointer;
    background-color: #EEE;
    padding: 0.5em 0.75em;
    color: #C0C0C0;
    text-decoration: none;
    background: rgba(98, 135, 167, .4)
    background: #45484d; /* Old browsers */
    background: -moz-linear-gradient(top, #45484d 0%, #000000 50%); /* FF3.6+ */
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#45484d), color-stop(100%,#000000)); /* Chrome,Safari4+ */
    background: -webkit-linear-gradient(top, #45484d 0%,#000000 100%); /* Chrome10+,Safari5.1+ */
    background: -o-linear-gradient(top, #45484d 0%,#000000 50%); /* Opera 11.10+ */
    background: -ms-linear-gradient(top, #45484d 0%,#000000 50%); /* IE10+ */
    background: linear-gradient(to bottom, #45484d 0%,#000000 50%); /* W3C */
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#45484d', endColorstr='#000000',GradientType=0 ); /* IE6-9 */
    /* Menu items that have mouse over or focus have a blue background and white text */
    ul.MenuBarHorizontal a:hover, ul.MenuBarHorizontal a:focus
    background-color: #33C;
    color: #FFF;
    background: #7d7e7d; /* Old browsers */
    background: -moz-linear-gradient(top,  #7d7e7d 0%, #0e0e0e 50%); /* FF3.6+ */
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#7d7e7d), color-stop(100%,#0e0e0e)); /* Chrome,Safari4+ */
    background: -webkit-linear-gradient(top,  #7d7e7d 0%,#0e0e0e 50%); /* Chrome10+,Safari5.1+ */
    background: -o-linear-gradient(top,  #7d7e7d 0%,#0e0e0e 50%); /* Opera 11.10+ */
    background: -ms-linear-gradient(top,  #7d7e7d 0%,#0e0e0e 50%); /* IE10+ */
    background: linear-gradient(to bottom,  #7d7e7d 0%,#0e0e0e 50%); /* W3C */
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#7d7e7d', endColorstr='#0e0e0e',GradientType=0 ); /* IE6-9 */
    BROWSER HACKS: the hacks below should not be changed unless you are an expert
    /* HACK FOR IE: to make sure the sub menus show above form controls, we underlay each submenu with an iframe */
    ul.MenuBarHorizontal iframe
    position: absolute;
    z-index: 1010;
    filter:alpha(opacity:0.1);
    /* HACK FOR IE: to stabilize appearance of menu items; the slash in float is to keep IE 5.0 from parsing */
    @media screen, projection
    ul.MenuBarHorizontal li.MenuBarItemIE
      display: inline;
      f\loat: left;
      background: #FFF;
    html 
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Bright Like The Sun -- San Antonio, TX</title>
    <style type="text/css">
    <!--
    body {
    font: 100%/1.4 Verdana, Arial, Helvetica, sans-serif;
    background-color: #000000;
    margin: 0;
    padding: 0;
    color: #000;
    background-image: url(background.jpg);
    /* ~~ Element/tag selectors ~~ */
    ul, ol, dl { /* Due to variations between browsers, it's best practices to zero padding and margin on lists. For consistency, you can either specify the amounts you want here, or on the list items (LI, DT, DD) they contain. Remember that what you do here will cascade to the .nav list unless you write a more specific selector. */
    padding: 0;
    margin: 0;
    h1, h2, h3, h4, h5, h6, p {
    margin-top: 0;  /* removing the top margin gets around an issue where margins can escape from their containing div. The remaining bottom margin will hold it away from any elements that follow. */
    padding-right: 15px;
    padding-left: 5px; /* adding the padding to the sides of the elements within the divs, instead of the divs themselves, gets rid of any box model math. A nested div with side padding can also be used as an alternate method. */
    font-family: Tahoma, Geneva, sans-serif;
    color: #000;
    a img { /* this selector removes the default blue border displayed in some browsers around an image when it is surrounded by a link */
    border: none;
    /* ~~ Styling for your site's links must remain in this order - including the group of selectors that create the hover effect. ~~ */
    a:link {
    color:#414958;
    text-decoration: underline; /* unless you style your links to look extremely unique, it's best to provide underlines for quick visual identification */
    a:visited {
    color: #4E5869;
    text-decoration: underline;
    a:hover, a:active, a:focus { /* this group of selectors will give a keyboard navigator the same hover experience as the person using a mouse. */
    text-decoration: none;
    /* ~~ this container surrounds all other divs giving them their percentage-based width ~~ */
    .container {
    width: 80%;
    max-width: 1260px;/* a max-width may be desirable to keep this layout from getting too wide on a large monitor. This keeps line length more readable. IE6 does not respect this declaration. */
    min-width: 780px;/* a min-width may be desirable to keep this layout from getting too narrow. This keeps line length more readable in the side columns. IE6 does not respect this declaration. */
    background-color: #FFF;
    margin: 0 auto; /* the auto value on the sides, coupled with the width, centers the layout. It is not needed if you set the .container's width to 100%. */
    /* ~~ the header is not given a width. It will extend the full width of your layout. It contains an image placeholder that should be replaced with your own linked logo ~~ */
    .header {
    background-color:#06C
    /* ~~ These are the columns for the layout. ~~
    1) Padding is only placed on the top and/or bottom of the divs. The elements within these divs have padding on their sides. This saves you from any "box model math". Keep in mind, if you add any side padding or border to the div itself, it will be added to the width you define to create the *total* width. You may also choose to remove the padding on the element in the div and place a second div within it with no width and the padding necessary for your design.
    2) No margin has been given to the columns since they are all floated. If you must add margin, avoid placing it on the side you're floating toward (for example: a right margin on a div set to float right). Many times, padding can be used instead. For divs where this rule must be broken, you should add a "display:inline" declaration to the div's rule to tame a bug where some versions of Internet Explorer double the margin.
    3) Since classes can be used multiple times in a document (and an element can also have multiple classes applied), the columns have been assigned class names instead of IDs. For example, two sidebar divs could be stacked if necessary. These can very easily be changed to IDs if that's your preference, as long as you'll only be using them once per document.
    4) If you prefer your nav on the right instead of the left, simply float these columns the opposite direction (all right instead of all left) and they'll render in reverse order. There's no need to move the divs around in the HTML source.
    .sidebar1 {
    float: left;
    width: 20%;
    padding-bottom: 0px;
    background: #f1da36; /* Old browsers */
    background: -moz-linear-gradient(left, #f1da36 0%, #fefcea 100%); /* FF3.6+ */
    background: -webkit-gradient(linear, left top, right top, color-stop(0%,#f1da36), color-stop(100%,#fefcea)); /* Chrome,Safari4+ */
    background: -webkit-linear-gradient(left, #f1da36 0%,#fefcea 100%); /* Chrome10+,Safari5.1+ */
    background: -o-linear-gradient(left, #f1da36 0%,#fefcea 100%); /* Opera 11.10+ */
    background: -ms-linear-gradient(left, #f1da36 0%,#fefcea 100%); /* IE10+ */
    background: linear-gradient(to right, #f1da36 0%,#fefcea 100%); /* W3C */
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f1da36', endColorstr='#fefcea',GradientType=1 ); /* IE6-9 */
    .content {
    padding: 0px 0;
    width: 80%;
    float: left;
    /* ~~ This grouped selector gives the lists in the .content area space ~~ */
    .content ul, .content ol {
    padding: 0 15px 15px 40px; /* this padding mirrors the right padding in the headings and paragraph rule above. Padding was placed on the bottom for space between other elements on the lists and on the left to create the indention. These may be adjusted as you wish. */
    /* ~~ The footer ~~ */
    .footer {
    padding: 10px 0;
    background-color: #000000;
    position: relative;/* this gives IE6 hasLayout to properly clear */
    clear: both; /* this clear property forces the .container to understand where the columns end and contain them */
    font-family: "Comic Sans MS", cursive;
    /* ~~ miscellaneous float/clear classes ~~ */
    .fltrt {  /* this class can be used to float an element right in your page. The floated element must precede the element it should be next to on the page. */
    float: right;
    margin-left: 8px;
    .fltlft { /* this class can be used to float an element left in your page. The floated element must precede the element it should be next to on the page. */
    float: left;
    margin-right: 8px;
    .clearfloat { /* this class can be placed on a <br /> or empty div as the final element following the last floated div (within the #container) if the #footer is removed or taken out of the #container */
    clear:both;
    height:0;
    font-size: 1px;
    line-height: 0px;
    #menurules {
    margin: 0px;
    padding: 0px;
    -->
    </style>
    <link href="SpryAssets/SpryMenuBarHorizontal.css" rel="stylesheet" type="text/css" />
    <!--[if lte IE 7]>
    <style>
    .content { margin-right: -1px; } /* this 1px negative margin can be placed on any of the columns in this layout with the same corrective effect. */
    ul.nav a { zoom: 1; }  /* the zoom property gives IE the hasLayout trigger it needs to correct extra whiltespace between the links */
    </style>
    <![endif]-->
    <script src="SpryAssets/SpryMenuBar.js" type="text/javascript"></script>
    </head>
    <body>
    <div class="container">
      <div class="header"><a href="#"><img src="BLTS1.jpg" alt="BLTS" name="BLTS" width="100%" height="100%" id="BLTS" style="display: block;" /></a>
       <ul id="MenuBar1" class="MenuBarHorizontal">
         <li><a class="MenuBarItemSubmenu" href="#"><center>Home</center></a></li>
         <li><a href="#"><center>Shows</center></a>
    <ul>
             <li><a href="#"><u>Upcoming shows</u><br />
    <br />
    May 4th 2013 @<img src="502.jpg" width="5%" height="5%"><br />
    Bright Like The Sun along with Little Science<br />
    8pm 21+
    </a></li>
                   </ul>
         </li>
         <li><a class="MenuBarItemSubmenu" href="#"><center>Merch</center></a>
           <ul>
             <li><a class="MenuBarItemSubmenu" href="#"><u>Album</u><br /><img src="coda fin cover.jpg" width="15%" height="15%"><font size="4">Coda Fin</font><br />
    Purchase Here or Itunes</a>
                        </li>
             <li><a href="#">Shirts--Coming Soon!</a></li>
             <li><a href="#">Various--Coming Soon!</a></li>
           </ul>
         </li>
         <li><a href="#"><center>Bio</center></a></li>
    <li><a href="#"><center>Contact</center></a></li>
    </ul><!-- end .header --></div>
    <div class="sidebar1">
      <p></p>
        <br />
        <p> </p>
        <p> </p>
        <p> </p>
        <p> </p>
        <p> </p>
        <p> </p>
        <p> </p>
        <p> </p>
        <p> </p>
        <p> </p>
        <p> </p>
        <p> </p>
        <p> </p>
        <p> </p>
        <p> </p>
        <p> </p>
        <p> </p>
        <p> </p>
        <p> </p>
        <p> </p>
      </div> 
      <div class="content"><p align="right"><a href="https://www.facebook.com/brightlikethesun"><img src="FB.jpg" width="30" height="31" alt="Facebook" /></a><img src="twitter-icon.png" width="30" height="31" /></p>
        <p align="left"><img src="weare.jpg" width="185" height="72" /></p><p align="right"><iframe style="border:none" src="http://files.podsnack.com/iframe/embed.html?hash=adznldvg&t=1366488970" width="340" height="54" allowfullscreen="true" mozallowfullscreen="true" webkitallowfullscreen="true" ></iframe></p>
        <p><img src="BLTS2.jpg" alt="BLTS" width="411" height="297" align="left" /><img src="BLTS font.jpg" width="340" /> is a Post-Rock band from San Antonio. They were born in early 2012 from the collective desire to make beautiful, thought provoking, and at times, chaotic music. Much like fellow Texan bands like Explosions in the Sky and This Will Destroy You, they are entirely instrumental, and known for creating progressively intricate waves of ambiance that grow with intensity and an unabashed wash of emotion. Attuned to their affinity for dynamics, seeing them live takes the listener from deafening walls of orchestrated sound, to melodies so subtle that one finds themselves acutely aware of their own breathing. <br />
          Bright Like The Sun&rsquo;s debut album, Coda Fin, was engineered/mixed by Alex Bhore (of This Will Destroy You), and mastered by TW Walsh (of Pedro The Lion). The record, which was self released, was made available on April 12, 2013.<br /><br /><img src="BLTS3.jpg" width="330" height="245" align="right" /></p>
    <br />
    <br />
        <h4>Bright Like The Sun Consists of:</h4>
        <p>Rob Mochen - Guitar <br />
        Chris Etheredge - Guitar/Keys <br />
        Christian Miranda - Bass <br />
        Steven Barrera - Drums    </p>
        <p><br />
        </p>
        <h4><u>Coda Fin</u> Release Date April 12th 2013    </h4>
        <h4><img src="coda fin cover.jpg" width="250" height="238" align="left" /><img src="venues.jpg" width="171" height="65" align="right" /><br />
        <br />
        <br />
        <br />
           <a href="http://502bar.com/"><img src="502.jpg" width="150" height="112" align="right" /></a><a href="http://www.gypsyloungeaustin.com"><img src="gypsylounge.jpg" / width="150" height="112" align="right"></a></h4>
        <p align="right"> </p>
      </div>
      <div class="footer">
        <p><font face="verdana" font size="2" font color="#FFFFFF">&#169;2013 Bright Like The Sun All Rights Reserved</font></p>
        <!-- end .footer --></div>
      <!-- end .container --></div>
    <script type="text/javascript">
    var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgDown:"SpryAssets/SpryMenuBarDownHover.gif", imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
    </script>
    </body>
    </html>

    What I see:
    You need a width on the ul.MenuBarVertical style. Make it the same width as the ul.MenuBarVertical li selector.
    Remove the float: none; from this style:
    ul.MenuBarVertical ul li
         width: 12em;
         float: none;
    No such measurement as a half a pixel:
    ul.MenuBarVertical ul
         border: .5px solid #CCC;
    If you want a border, 1px is minimum...you repeat this incorrect half-pixel in several places.
    Running your page through the W3C Validator returned this: http://validator.w3.org/check?uri=http%3A%2F%2Fwww.healthydirections.ca%2F&charset=%28dete ct+automatically%29&doctype=Inline&group=0
    Your initial errors are not declaring a DOCTYPE, which among other things, does not provide the browser with any information regarding how you want the code interpreted for your viewer. Some browsers guess well, some do not (IE).
    This
         <html>
    is insufficient.
    Apply this in its place, and run through the validator again.
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    Beth

  • IMac 24 C2D freezing, beach ball, pinwheel

    Hello wonderful user community!
    I am helping my wife with this issue, she's never posted on the ASC before.
    In the last two weeks my iMac has started behaving strangely.   It doesn't seem to matter whether running Spotify, Chrome, Firefox, or other applications, I will get beach balls, seemingly at random intervals.  If watching a video on Youtube or Netflix, the picture will freeze the but the audio will continue.  You can't Force Quit or make any commands in other applications, so it seems to be system wide.  If someone is playing a video from my hard drive from the LAN, their video playback will freeze.  After 15 secs to a minute or more, the machine will resume normal operation. 
    What I've tried:
    The OS was installed less than a year ago from 10.6 disk and updated to OS 10.6.8 using Combo Updater.
    Disk Repair Permisions
    Disk Repair (boot from external drive)
    reset PRAM
    Take to Genius Desk at Apple store (results inconclusive, no hardware issues)
    Activity Monitor shows no app in particular hanging
    I'm about to cut and run on this thing, put it on Craigslist, and move on. 
    Any light shed on this would be incredibly helpful.  I work from this iMac while my daughter watches videos on a 2nd monitor throughout the day.  At night it's our TV and we watch movies on it.  Needless to say it's an integral part of our lifestyle. 
    Hardware Overview:
      Model Name:          iMac
      Model Identifier:          iMac9,1
      Processor Name:          Intel Core 2 Duo
      Processor Speed:          2.66 GHz
      Number Of Processors:          1
      Total Number Of Cores:          2
      L2 Cache:          6 MB
      Memory:          8 GB
      Bus Speed:          1.07 GHz
      Boot ROM Version:          IM91.008D.B08
      SMC Version (system):          1.45f0
      Serial Number (system):          YD9*****0TG   <Serial Number Edited by Host>
      Hardware UUID:          93EC2F20-E293-50E4-9EC3-F0401B5D8D65
    Console sample taken during time period of several hangs:
    2/20/12 8:56:32 PM
    [0x0-0x13013].com.SugarSync.Manager[262]
    [Mon Feb 20 20:56:32 2012:405406] [info] [datastore.sync.syncset] [0xb0617000] [Start syncing /sc/5000]
    2/20/12 8:56:47 PM
    [0x0-0x13013].com.SugarSync.Manager[262]
    [Mon Feb 20 20:56:47 2012:405079] [info] [datastore.volumerelayclient] [0xb0617000] [getBucketChangeId timed out. bucket id: 5000]
    2/20/12 8:56:47 PM
    [0x0-0x13013].com.SugarSync.Manager[262]
    [Mon Feb 20 20:56:47 2012:405145] [error] [datastore.sync.syncset] [0xb0617000] [ScVolumeSyncer.cpp:1644 getBucketChid failed for path /sc/5000]
    2/20/12 8:56:47 PM
    [0x0-0x13013].com.SugarSync.Manager[262]
    [Mon Feb 20 20:56:47 2012:405168] [info] [datastore.sync.manager] [0xb0617000] [restartWithDelay. syncPath = /sc/5000, delay = 600 sec]
    2/20/12 9:01:54 PM
    [0x0-0x25025].com.spotify.client[317]
    05:01:54.340 I [social_presence.cpp:120] Presence: A track was played
    2/20/12 9:01:55 PM
    [0x0-0x25025].com.spotify.client[317]
    05:01:55.352 I [snd:517] 64k-Latency: 2 ms. Play latency: 184 ms (ap)
    2/20/12 9:06:47 PM
    [0x0-0x13013].com.SugarSync.Manager[262]
    [Mon Feb 20 21:06:47 2012:405283] [info] [datastore.sync.syncset] [0xb0617000] [Stop syncing /sc/5000]
    2/20/12 9:06:47 PM
    [0x0-0x13013].com.SugarSync.Manager[262]
    [Mon Feb 20 21:06:47 2012:405353] [info] [datastore.sync.syncset] [0xb0617000] [Start syncing /sc/5000]
    2/20/12 9:07:02 PM
    [0x0-0x13013].com.SugarSync.Manager[262]
    [Mon Feb 20 21:07:02 2012:404888] [info] [datastore.volumerelayclient] [0xb0617000] [getBucketChangeId timed out. bucket id: 5000]
    2/20/12 9:07:02 PM
    [0x0-0x13013].com.SugarSync.Manager[262]
    [Mon Feb 20 21:07:02 2012:404974] [error] [datastore.sync.syncset] [0xb0617000] [ScVolumeSyncer.cpp:1644 getBucketChid failed for path /sc/5000]
    2/20/12 9:07:02 PM
    [0x0-0x13013].com.SugarSync.Manager[262]
    [Mon Feb 20 21:07:02 2012:405016] [info] [datastore.sync.manager] [0xb0617000] [restartWithDelay. syncPath = /sc/5000, delay = 600 sec]
    2/20/12 9:08:15 PM
    [0x0-0x25025].com.spotify.client[317]
    05:08:15.352 I [social_presence.cpp:120] Presence: A track was played
    2/20/12 9:08:16 PM
    [0x0-0x25025].com.spotify.client[317]
    05:08:16.228 I [snd:517] 64k-Latency: 3 ms. Play latency: 195 ms (ap)
    2/20/12 9:14:26 PM
    [0x0-0x25025].com.spotify.client[317]
    05:14:26.646 I [social_presence.cpp:120] Presence: A track was played
    2/20/12 9:14:33 PM
    [0x0-0x25025].com.spotify.client[317]
    05:14:33.708 I [snd:517] 64k-Latency: 2 ms. Play latency: 6179 ms (ap)
    2/20/12 9:15:36 PM
    [0x0-0x25025].com.spotify.client[317]
    05:15:36.315 I [offline-mgr:2144] Storage has been cleaned
    2/20/12 9:17:02 PM
    [0x0-0x13013].com.SugarSync.Manager[262]
    [Mon Feb 20 21:17:02 2012:405144] [info] [datastore.sync.syncset] [0xb0617000] [Stop syncing /sc/5000]
    2/20/12 9:17:02 PM
    [0x0-0x13013].com.SugarSync.Manager[262]
    [Mon Feb 20 21:17:02 2012:405274] [info] [datastore.sync.syncset] [0xb0617000] [Start syncing /sc/5000]
    2/20/12 9:17:17 PM
    [0x0-0x13013].com.SugarSync.Manager[262]
    [Mon Feb 20 21:17:17 2012:405045] [info] [datastore.volumerelayclient] [0xb0617000] [getBucketChangeId timed out. bucket id: 5000]
    2/20/12 9:17:17 PM
    [0x0-0x13013].com.SugarSync.Manager[262]
    [Mon Feb 20 21:17:17 2012:405155] [error] [datastore.sync.syncset] [0xb0617000] [ScVolumeSyncer.cpp:1644 getBucketChid failed for path /sc/5000]
    2/20/12 9:17:17 PM
    [0x0-0x13013].com.SugarSync.Manager[262]
    [Mon Feb 20 21:17:17 2012:405181] [info] [datastore.sync.manager] [0xb0617000] [restartWithDelay. syncPath = /sc/5000, delay = 600 sec]

    meow3cjc wrote:
    I did study XLab's article before posting here, and I did check the Activity monitor for oddities and found none.
    Another clue:  When watching a DVD disc, there are no freezes. This is the ONLY time we don't experience the 15 minute freeze cycle.  Starting to think the harddrive is failing...
    If you suspect the HD is failing then run Apple Hardware Test in Extended Mode , it is wise to run the test 2-3 times to be sure. If it  picks up any error codes then you should plan on visiting an Apple Store or AASP to get it fixed and the codes interpreted. Apple does not publish what codes are interpreted as however some will give you a good idea. For example if it has HDD in it then you know the error is related to the HD however you don't know if it's the drive itself or it possible it could be  fan sensor for the HD, this is why it's smart to take it in.

  • Tools to fix Adobe png files & add ICC profiles?

    I want to submit and use pictures in a lossless format like png, but I've noticed that my colors don't get reproduced as vividly when I save in png vs. jpg or tiff because Photoshop (CS5/windows) seems to have broken png support (I guess it gets worse in CS6)... storing color profiles in png's while not widely done, have been part of the standard for over a decade. 
    Given Adobe's place a providing the premier image editing tools, It's hard to believe they'd not support accurate color in lossless images for the web, but I've yet to see any Adobe produced png that that contains a profile.
    I do note, that libpng, the most widely used library for pngs, does have the ability
    to read and store ICC color profiles.
    Maybe I'll have to write a post processor to add them on... as some programs do read them... and at least once, recently, in reading in a png file, I got a profile mismatch from Photoshop -- indicating that it can read profiles (OR, the file was only named .png, and
    was actually a .jpg -- if only I could remember what file it was...sigh...)...
    Maybe adobe could release an addon that automatically adds & prompts for
    profile settings on saves (assuming PS can use them)...
    Any work flows where people add them?  Does PS read them in properly?
    Tools used?
    Thanks...,
    A*a

    Astara_ wrote:
    Yes -- it does save a color profile, but it doesn't save it in a way that renders the same as tif and jpg in either Explorer or FF. or a ICC-color handling -in-hw photo view program.
    when I read it in, told me about  a color profile mismatch, so I allowed it to convert to my current profile
    I'm not sure why you chose to convert the image to a different profile.  That muddied the water.
    Generally speaking, properly color-managed applications will interpret PNG, TIFF, and JPEG images per the profiles embedded by Photoshop, and the images will look visually the same, though you may see small differences in the color numbers.
    That's shown here by my having saved three equivalent images, in PNG, JPEG, and TIFF format, all tagged with the ProPhoto RGB format.  I then opened them in Windows Photo Viewer, Photoshop, Safari, Firefox (which does not open TIFF files natively), and IE9 (which does not open TIFF files natively, and does not do a complete job of color-management on images).  I also showed the thumbnails in Explorer, though to be fair that's the same codec code interpreting the images as in Windows Photo Viewer.
    Keep in mind not all applications are properly color-managed, and what you see from those that are not (e.g., IE) can be subject to settings on your own system.
    Beyond that, not every color-management system produces perfectly accurate results (including Photoshop's under some conditions), nor does every one necessarily use the same options (black point compensation, etc.) so the color numbers will be seen to differ a little. 
    Also, JPEG compression can result in some color inaccuracy.
    Oh, and capturing your screen and publishing an image should involve a conversion, or at least publishing the image tagged with the monitor color profile, because RGB values pulled off your screen are of course expressed in your monitor's color space.
    You'd think in this day and age that things would be more nailed down than they are, but it is what it is.  Bottom line, though, is that if you're SEEING VISIBLE DIFFERENCES, you probably have a color management problem on your system or you're expecting better color-management compliance from an application than it's actually delivering.
    It's too late and I'm really far too tired to get into a deeper conversation on color-management.  Such a thread could go on for days, and they usually do.
    -Noel

  • Oracle ADF Mobile: Multiline text output

    Hi,
    I am implementing a user interface for an interpreter.
    The output from the interpreter can be multiple lines.
    I was trying to display the output with outputtext and inputtext in read only mode and with some different newline symbols (\n, \r\n, <br />).
    I didn't get line breaks in my output components.
    Has somebody a solution for me for this problem?
    The component value is set from java code:
        public void execute(ActionEvent actionEvent) {
            ValueExpression veOut    = getStringValueExpression("#{applicationScope.output}");
            ValueExpression veErrOut = getStringValueExpression("#{applicationScope.erroroutput}");
            String code = getString(getStringValueExpression("#{applicationScope.input}" ));
            InterpreterThread interpreter = new InterpreterThread(code);
            interpreter.start();
            while( interpreter.isAlive() ) ;
            String output    = interpreter.getOutput();
            String erroutput = interpreter.getErrorOutput();
            setString(veOut,output);
            setString(veErrOut,erroutput);
        private static void setString( ValueExpression e, String s ) {
            e.setValue(context(), s);
        private static String getString( ValueExpression e ){
            return (String)e.getValue(context());
        private static ELContext context(){
            return AdfmfJavaUtilities.getAdfELContext();
    Thank you for the responses and sorry for my bad english I spend two days searching for a solution and didn't succeed.

    Duplicate of  Print multi line in outputText ADF Mobile ?

Maybe you are looking for

  • Video out of synch with audio using isight camera

    Anybody have any solutions? I am recording using the built-in isight. What seems to be happening is that the first one or two seconds of audio is not being recorded, so it looks like the video is a few seconds behind the audio. Any ideas how to fix i

  • How to write this logic  in EL expression ? (new line characters in string

    iam using JSTL EL expression in my JSP. iam printing a string in JSP as ${vobject.rmessage} where rmessage is a string . problem is i want to identify the newline characters in the above rmessage string and print the line break <br> in html where eve

  • Speed/Duplex are not advertising correctly with configured values

    Hi, I have a gateway which runs on Windows Embedded Standard 7 which has Intel NIC Card. I have connected this gateway and a switch in a network where switch has configured speed/duplex as 1000Mbps/Full. When I set the Speed/Duplex on my gateway's NI

  • Boot Camp 4 - Installer disc not recognised

    Hi All, I am trying to create a Windows 7 partition on my Macbook Pro (late 2009) running OSX Lion 10.7.2 with Boot Camp 4. Clicking on "Install" button to create the partition and install Windows with the disc in the drive gives an "The windows inst

  • Extractor for Purchasing Conditions for tables EKKO, EKPO and KONV

    Hi Experts, I want to know if there is an Extractor for Purchasing Conditions with fields in tables of Origin: EKKO, EKPO and KONV. Or, at least an extractor with the table KONV. Or, how I can look for it. Any feedback, will be really apreciated. Tha