I am starting to setup puppet. I want to set up a dependencies that a mail transfer agent must be installed before that class tries to install or start anything. With puppet, the standard method seems to set a dependency seems to be `require blah`. The challenge is I don't use the same MTA on all of my systems. Some of the systems which are actual mail servers I have a full MTA (exim), but the vast majority of my systems have ssmtp installed. What I want do is setup a requirement so that either one of those MTAs is installed and functional before the the `foo` class is processed.

Here is a configuration that somewhat demonstrates what i am trying to do.

```
node default {
  if $fqdn in ["mail1.example.org", 
               "mail2.example.org", 
               "mail3.example.org"] {

    include fullmta  # mailhub, and so on
  } else {
    include ssmtp    # really basic send-only mta.
  }
  include foo        # class that requries an mta be installed
}

class foo {
  require MTA # FIXME, A valid mta is required.

  package { foo: ensure => present, }
  ... # also a service, and some files, and so on...
}

```

So in my foo class, how do I require that one of the possible MTAs classes has been processed?