Writing policies usually means passing parameters to predefined Zorp objects, so you'll need a little understanding what is what in Zorp.
Listener
Listener is responsible to listen on a network interface and start a service if a connection is accepted.
Service
Service is a class encapsulating a firewall service offered to clients. A service consists of a unique name (used in log messages and access control), a proxy class to instantiate when the service is started, a chainer responsible for connecting to the server, and an authentication mechanism used to authenticate a user. (currently disabled)
Chainer
Chainer is responsible for determining the server address to connect to. There are several different Chainers defined each implementing a different method for defining the server address. TransparentChainer connects to the original destination (primarily used on transparent proxies), DirectedChainer connects to a predefined and fixed address (primarily used to direct traffic to an externally unaddressable host). For more information on chainers consult the Chainer.py source file.
Proxy class
Each proxy in Zorp defines a class in Python from which you can derive your customized classes, these are referred to as proxy classes. By deriving your class from a particular low level class, it determines the protocol that is usable on channels handled by your class.
Zone
Zone and its derivatives are the basis in connection level access control in Zorp.